0

cdb または windbg を使用してデバッグしていて、自分のマシンの特定のアプリケーションにアタッチしているときに、cdb または windbg が頻繁にハングするという問題がありますが、常にではありません。

この記事を見つけました: http://www.nynaeve.net/?p=164は、シンボルのロード競合状態が問題であると述べていますが、シンボルを強制的にロードし、実際にはアプリ内でブレークポイントが機能し、それでも問題ありません。他の場所に吊るしてください。

別のデバッガーでアタッチしたときの cdb 自体のスタックを次に示します。

ntdll!NtReadFile
kernel32!ReadFile
cdb!ReadNonConLine
cdb!ConIn
cdb!MainLoop
cdb!main

!analyze は、APPLICATION_HANG_BusyHang が問題のバケットであり、'ReadNonConLine' が問題のある関数であることを報告します。

スタックに関する限り:

ffffffff`fffffffe 00000000`00000000 00000001`3f641498 00000000`0014ea50 : kernel32!ReadFile+0x86
00000000`000002a4 00000000`0014ebb0 00000000`00001000 00000000`00000000 : cdb!ReadNonConLine+0x6d

ReadNonConLine には、0014ebb0 の文字列 "g" がパラメーターとして渡されます。これは、ぶら下がっているブレークポイントで実行したコマンドの一部である可能性があります (bp foo"dt a; g" のようなものでした)。

ReadFile は、最初のパラメーターとしてハンドルを受け取ります。しかし、値が -2 であることに驚きましたが、これは有効に見えません。

どんな助けでも大歓迎です。

ありがとう!アーロン

4

1 に答える 1

1

32 ビット アプリを 64 ビット ツールでデバッグしていたので、32 ビット デバッグ ツールに切り替えることにしました。それ以来、ハングすることはありません。

問題のアプリはかなりグラフィカルに集中しています。デバッグ環境での WoW64 とのやり取りがうまくいかなかったと思います...

于 2009-08-04T22:25:31.473 に答える