クラッシュダンプと比較すると、プロセスに接続するときのWinDbgは異なるコールスタックを示します

StackOverflow https://stackoverflow.com/questions/1666137

質問

私は、マネージコードと一緒にネイティブライブラリを使用する際に発生するデッドロックだと分析しています。私は、ベンダーが自分の敷地内に問題を観察する可能性があることを、このようなダンプを保存することを意図して、問題をデバッグするためのWinDbgを使用しています。

問題のプロセスにアタッチすると

私は、任意のコールスタックの前に次のメッセージが表示されます:

  

WARNING:スタックが利用できない情報をおくつろぎください。フレームに続いて、間違っている可能性があります。

プロセスに直接取り付けられたときに

のフレームが実際に正しく見えます。私は、このファイルのダンプを取り、その後、別のマシン上のWinDbgでダンプを開いたときただし、スタックフレームの1つが異なっている(上記のエラーも表示されます。)コードパスが不可能に思えたので、これはもともと、ベンダーは困惑していましたます。

私が使用してダンプを取っます:

.dump /ma filename.dmp

何がこの不一致の原因となる、と私は確実にダンプ・ファイルのコールスタックを分析するために何かできることはありますか?私が知っておくべき他の詐称のデータがあるかもしれない?

役に立ちましたか?

解決

あなたが不一致PDBSがある可能性がありますように

この音が鳴ります。あなたは!chksym!itoldyousoコマンドを試してみましたか?例えば参照<のhref = "http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/10/28/itoldyouso-an-undocumented-windbg-extension-command.aspx" のrel = "nofollowをnoreferrer 「> Bugslayer記事の

しようとするもう一つは、PDBファイルがロードされているかをお見せしなければならない!sym noisyです。

のhref = "http://blogs.msdn.com/debuggingtoolbox/archive/2009/09/04/special-command-using-chksym-itoldyouso-to-check-pdb-files-against- <も参照してください。 modules.aspx」のrel = "nofollowをnoreferrer"> MSDNのブログで

他のヒント

警告は、デバッガは、既存のモジュール情報とスタック上の1つ以上のアドレスを関連付けることができないことを語っています。マネージドコードは、CLRによってオンザフライでコンパイルされるように、コード、従って警告のための対応するモジュールが存在しません。

SOSコマンド!clrstackは意味のスタック(または少なくとも警告なし)を表示するためにCLRから必要な情報を持っています。あなたはネイティブ・スタック・ダンプ・コマンドのいずれかを使用する場合は、マネージコードのために、この警告が表示されます。

今後の本アドバンスド.NETのデバッグは、追加の詳細を持っています。 http://advanceddotnetdebugging.com/する

を参照してください。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top