Debugger Engine APIを利用する小さなツールを作成しようとしていますが、成功は非常に限られています。
IDebugClientおよびIDebugControlインスタンスを取得でき、そこから既に実行中のユーザー プロセスにアタッチできます。次に、メイン ループに入り、WaitForEvent、OutputStackTrace、SetExecutionStatus ( DEBUG_STATUS_GO
) を呼び出して繰り返します。本質的に、これは非常に大雑把なサンプリング ベースのプロファイラーになります。
これまでのところ良い..
私のループは 1 回の完全な繰り返しで実行され、スタック トレースが表示され、ターゲット プロセスが実行状態に戻ることがわかります。
私が抱えている問題は、2回目の繰り返しでへの呼び出しがWaitForEvent
返されるE_HANDLE
ことです(「ハンドルが無効です」)。このエラーが返される理由がドキュメントに表示されません。なぜこれが起こっているのか誰にも分かりますか?