2009-08-15 6 views
1

私はデバッグ中で、いくつかのレガシーコードやフレームワークを扱っているときに、時には特定の値を含むプロパティを取得する必要があります。たとえば、私は153をUI上に置いていることを知っています。私はそこに置いた後、どこにあるのか知る必要があります。これは、このフレームワークに関する多くのことを理解するのに役立ちます。それは1つの使い方です、問題はどうやってそれを行うのですか?プロパティ/フィールドに値が含まれていることを知る方法はありますか?

+0

どのプログラミング言語とIDEで作業しているのかわかっていれば役に立ちます。 –

+0

申し訳ありませんが、IDE - VS 2005と2008です。いずれにしてもそれを行う方法はわかりません。 –

答えて

0

あなたがソースレベルのデバッグを持っていないと
が質問にフィールドを配置するためにシンボル参照を使用することはできません、「reverse engineering」の要件
を参照しているのだろうか。

変更が発生する可能性のある一般的なアドレス範囲を知っていれば、変更前後のメモリ領域のスナップショットを取ることができます。

このように2つのtextスナップショットでdiffを実行すると、アドレスが検索されます。


もう1つの方法は、入力範囲を検索して入力値を見つけることです。

  • 入力はプログラムメモリに変更することができるときは、この変更された値の「単純」
    153は、例えば、検索に非常に困難である)
  • に応じて偽陽性を起こしやすいです、それはまた、偽陰性

いくつかのデバッグ環境をサポートするデータ・ウォッチポイントが発生します。
しかし、これらは通常、広い範囲では利用できません。

+0

さて、実際には、値を提供することによってプロパティ/フィールド名を取得する方法を知りたいと思います。例:レガシーコードのあるプロジェクトには、複雑なクラス階層があります。私は、すべての入力値がどのように動作するかを理解するために、入力値のどこに行くのかを理解する必要があります。もし私がこのツールを手に入れたら、私は153を書いています。プロパティ/フィールド値が153のすべてのクラスが表示されます。 –

0

ええ、あなたのタグであなた自身の質問に答えました。デバッガを付けて値を調べます。

+0

いいえ、問題は、この値が現在のデバッグコンテキストにあるクラスプロパティ/フィールドを取得する方法です。それを見つける方法?唯一の方法が手動であれば、必要なものに到達するためにチェックする必要のあるプロパティの量を想像してください。 –

関連する問題