.NETのJITデバッガーでオブジェクトのメンバーを「検索」する
-
07-07-2019 - |
質問
私は現在の会社の比較的新しい従業員ですので、「消火ホースから飲む」のはまだです。ソフトウェアとアーキテクチャに関する私の方法を学ぶという点で。単体テストの作成中にいくつかの非常に大きなオブジェクトを扱っていることに気付いたので、議論のために「SavedOrder」と言いましょう。探している特定のデータの場所を見つける必要があります。
私が抱えている問題は、各SavedOrderが、継承とメンバー(メンバーがいる、メンバーがいるなど)の内部にあるデータの一部を持っていることを知っていることです。探しています。
今のところ、自分が探しているものを見つけられるように、気がかりなく時計を拡張し、オブジェクトの上にマウスを移動します。このオブジェクトに" Type A"の何かがあるかどうかを見つけるために使用するプラグイン/テクニックを知っている人はいますか?または値が" SomeEnum.SomeValue"?
編集:すべての良い入力、私の目標を完全に解決するものはまだありません。オブジェクトブラウザー(オブジェクトブラウザーとリフレクター)は各オブジェクトのメンバーを閲覧するのに適していますが、ポイントAをポイントDにリンクする目的で、ポイントAをポイントBに、またはDをCに移動するのに役立ちます。
ソリューションを最もよく説明する擬似c#再帰アルゴリズムは次のようになります。
WheresWaldo FindMember(Object o)
{
foreach(PublicMember member in o)
{
if(o.IsType(MyType))
return Success!;
else
return WheresWaldo(member);
}
}
知っている人は、多分不可能でしょう。
解決
あなたを完全にフォローするかどうかはわかりませんが、おそらく条件付きブレークポイントを使用できます。関連するコードにブレークポイントを設定し、右クリックして条件付きブレークポイントを選択します。ここから、ブレークポイントが評価されるたびに評価されるコードを記述できます。これにより、条件が満たされたときにのみ停止するように指定できます。
編集:コメントに基づいて、Reflectorが役立つと思います。特定のタイプまたはメンバーを検索するオプションがあります。関連するアセンブリでReflectorを起動します。検索のためにF3を押し、メンバーに対してCtrl-Mを選択し、探しているメンバーの名前を入力します。完全一致のオン/オフを切り替えて、検索に役立てることができます。
他のヒント
ObjectBrowser はおそらくあなたが望むものです使用する。それを使用してプロパティを検索できます。