Visual Studio デバッガーのブレークポイントでプロセスを中断しています。非侵襲モードで cdb (Microsoft のコンソール デバッガー) をいくつでもアタッチできます。
cdb -p pid -pvr
Debug Engine API を使用する独自のプログラムを使用して同じことを達成する方法。
IDebugClient* debugClient = 0;
(DebugCreate( __uuidof(IDebugClient), (void **)&debugClient );
debugClient->AttachProcess(0,id,DEBUG_ATTACH_NONINVASIVE
|DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND);
このコードは E_INVALIDARG を引き起こします。この組み合わせは許されませんか?以下のものは機能しますが、GetStackTrace を呼び出すと、E_UNEXPECTED が返されます。
debugClient->AttachProcess(0,id,DEBUG_ATTACH_NONINVASIVE);
debugControl->GetStackTrace(0, 0, 0, pStackFrames, maxFrames, &framesFilled);
すでにデバッグ ブレークの非侵襲的な方法でプロセスにアタッチし、現在のスタックといくつかのグローバル変数値からいくつかのローカル変数を取得することに興味があります。
次に、!stl のようにシンボルのメモリの内容を繰り返しダンプするために使用される関数を教えてください。ベクトルのような構造の 1 つをダンプするプラグインを作成する必要があります。
ありがとう