0

私がデバッグに使用したほとんどすべての言語ツールは、ブレークポイントとステッピング モードをサポートしているため、一度にスコープ内の特定のデータを監視できます。しかし、プログラム内のコンポーネントのいくつかの謎のパスでデータムを見逃したとき、特に複数の入口と出口を持つ一部のコンポーネントでデータムが蒸発したときは、まだ痛みを感じます.

ツールがデータムに「タグ付け」してそれを追跡し、どの関数 (または他の基本的なコンピューティング ユニット) がそれを飲み込んで変換したかを報告できるツールがあれば、この問題は解決するかもしれません。これは、患者に放射性錠剤を与える医療検査のようなもので、医師はそれを外で追跡できます。バックトレースがほとんど必要であることはわかっていますが、それでも各フレーム間でデータをトレースするのは面倒です。

私の (貧弱な) プログラミング経験によると、最も近いツール/言語は、プログラムの IPO パスの全体像を表すために型システムと構成を使用する Haskell の Arrow メカニズムです。しかし、それはあなたのプログラムがそれが提唱した方法に従う必要があり、それがアイデアを実装するための最良の方法であるかどうかはわかりません. 特に、C、C++、Ruby、Java、JavaScript などの他の言語では、そのように簡単にプログラミングすることはできません。

4

1 に答える 1

1

これは非常に難しい作業です。これを実現するためにアスペクト指向プログラミング(AOP)を使用することもできますが、特定のオブジェクト(少なくともJavaでは)へのすべてのアクセスを見つけてそれらをインストルメント化することは事実上不可能だと思います。

dflowあなたが得ることができる最も近いものはおそらくAOPのいわゆるポイントカットです、それは悲しいかな私が知る限りどこにも実装されていません。

最善の策は、データムが存在する特定のアドレス範囲(最初に把握する必要がある)にトリガーを使用してデバッガーブレークポイントを設定することです。

于 2012-08-10T09:39:32.670 に答える