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 であることに驚きましたが、これは有効に見えません。
どんな助けでも大歓迎です。
ありがとう!アーロン