デバッグ中に見つけたアドレスがありますが、それはあるプロセスのスレッドのコールスタックに属していると思われます。
それがどのスレッドであるかを知るための最良の方法は何ですか(またはそれが私の仮説は誤りです)?
PS私は何度も何度も使用することができ!process
まし.process
た!thread
が、もっと良い方法があるはずです。
PSS残念ながら、ユーザーモードのデバッグ中に状況を再現することはできません。
前もって感謝します。
まず、シンボルをロードしている場合は、 を使用してアドレスから情報を収集できる場合があります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を探しているアドレスに置き換えます)
うまくいけば、これはあなたが望むことをするか、少なくとも解決策をスクリプト化するように指示します.