2017-10-21 1 views
0

大きなデータグラフを持つ.NETプログラムのクラッシュダンプがあるとします。静的変数MyGraph.Rootを介してグラフのルートにアクセスできます。いくつかのデータプロパティに基づいて、ルートから多くのレベル下の項目をウォッチウィンドウで調べる必要があります。 item.Name == "Foobar".NETプログラムのクラッシュダンプのデバッグ:大きなデータグラフでアイテムを見つける方法は?

どのようにVisual Studioで行いますか?または風袋で?

アイテムに固有のタイプがある場合は、!dumpheap -typeを使用してそのタイプを検索できます。 Visual Studio、AFAIKには、それに似たものはありません。しかし、すべてのアイテムが同じタイプの場合はどうなりますか?

Visual Studioデバッガ用のカスタムデータビューアを作成できますが、グラフ内のオブジェクトを見つけることができますが、見つかったオブジェクトを通常のウォッチウィンドウに戻してそのプロパティを調べるにはどうすればよいですか?私はそれを可能にするAPIは見つかりませんでした。

私の実際の生活状況では、グラフはWPFウィンドウの視覚的なツリーで、子は親のプロパティとして直接アクセスできませんでした。ウィンドウのn番目の子を検索するには、System.Windows.Media.VisualTreeHelper.GetChild(window, n)を使用する必要があります。

アイデアをいただければ幸いです。

答えて

1

には、!wfromコマンドがあります。

あなたは多くの詳細を提供しなかったが、それは

!wfrom -type *.MyGraphNode where (_name == "Foobar") select $addr() 

あなたの問題のようになります。子どもたちは、親のプロパティとして直接アクセスすることはできません

.NETはヒープ上のすべてのオブジェクトにアクセスできるため、ここでは重要ではありません。

多くのグラフがあり、そのオブジェクトが特定のグラフに属していることを確認したい場合は、NetExtに追加の指示が必要です。

+0

ありがとうございました!それでも項目選択のためのカスタムコードは許可されていませんが、近づいています。 NetExt where句の構文についての参考資料はありますか?同様に、どのように私は配列の項目にアクセスして何をするのですか?私はgithubのreadmeのいくつかの例だけを見ていましたが、利用可能なものの完全なリストはありませんでした。 –

+0

@IvanKrivyakov:私はGithubのものよりも完全な文書に気づいていません。そこに問題を提起したいかもしれません。 –

関連する問題