5

1 つのパラメーターのメンバーに基づいて条件付きブレークポイントを設定したい. これでコマンド dt を使用してこのパラメーターをチェックできます. 私のコードは次のようになります:

void test(const MyClassB &inst, int value)
{
}

これで、dt コマンドを使用して最初のパラメーターである結果を表示できます。

0:000:x86> dt MyClassB @esp+4
dbgee!MyClassB
   +0x000 id               : (null) 
   +0x004 m                : 0n2130567168
   +0x008 myClassA         : MyClassA

inst.m の値に基づいて、このメソッドに条件付きブレークポイントを設定したいのですが、その方法を教えてもらえますか? 本当にありがとう!

そして、誰かがオフセットの使用方法 (m の場合は +0x004 など) に関する情報を提供してくれれば幸いです。

4

2 に答える 2

-1

windbg の pykd 拡張機能 ( pykd.codeplex.com ) を使用できます。これを使用すると、条件ブレークポイントを簡単に作成できます。

  1. 0.2.0.29 (推奨バージョン)

    kd>!pycmd
    dbgee = module("dbgee")
    bp = setBp( dbgee.test, lambda bpId: getParams()[0].m == 2130567168)
    quit()
    kd>g

  2. 0.3.0.10 (開発者バージョン)

コードをファイルに配置し、次のコマンドで実行できます: !py --global bp.py

0.2.x バージョンでもスクリプトを実行できますが、隔離された環境で実行され、終了後にすべてのオブジェクト (ブレークポイントを含む) が破棄されます。したがって、バージョン 0.3.x では、「グローバル」環境でスクリプトを実行する可能性があります (すべてのグローバル オブジェクトは、pykd が読み込まれるまで存続します)。

于 2014-11-05T06:45:50.927 に答える