2

デバッグ中に見つけたアドレスがありますが、それはあるプロセスのスレッドのコールスタックに属していると思われます。

それがどのスレッドであるかを知るための最良の方法は何ですか(またはそれが私の仮説は誤りです)?

PS私は何度も何度も使用することができ!processまし.process!threadが、もっと良い方法があるはずです。

PSS残念ながら、ユーザーモードのデバッグ中に状況を再現することはできません。

前もって感謝します。

4

1 に答える 1

0

まず、シンボルをロードしている場合は、 を使用してアドレスから情報を収集できる場合がありますln <address>。そこから、どのプロセス/スレッドが関与しているかを推測するのは難しくありません。

それでもうまくいかない場合は、ブルートフォース アプローチに進むことができます。検索の最善の策は、より検索しやすい形式でコールスタックのフェッチを自動化することです。以下は、お気に入りのテキスト エディタでより簡単に検索できるように、それらすべてをファイルに書き出します。

.logopen c:\stacks.txt; !for_each_process "!process @#Process; ~*kv1000"; .logclose

少し時間がかかるので、コーヒーを飲みに行きましょう。運が良ければ、次のように windbg から直接出力を検索できます。

.shell -ci "!for_each_process \"!process @#Process; ~*kv1000\"" findstr "deadbeef"

( deadbeefを探しているアドレスに置き換えます)

うまくいけば、これはあなたが望むことをするか、少なくとも解決策をスクリプト化するように指示します.

于 2012-12-10T18:23:49.033 に答える