以下は私のプログラムであり、windbgを使用したWaitForSingleObject()呼び出しでプロセスがブロックされたときに、呼び出しスタックを取得しようとしています。奇妙なことに、プロセスがブロックされているとき、windbgは非常に奇妙なスタックしか出力しません。
wow64cpu!TurboDispatchJumpAddressEnd + 0x690 wow64cpu!TurboDispatchJumpAddressEnd + 0x484 wow64!Wow64SystemServiceEx + 0x1ce wow64!Wow64LdrpInitialize + 0x429 ntdll!RtlResetRtlTranslations + 0x1b08 ntdll!RtlResetRtlTranslations + 0xc63 ntdll!LdrInitializeThunk + 0xe
// process2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
HANDLE g_hWriteEvent;
int _tmain(int argc, _TCHAR* argv[])
{
g_hWriteEvent = OpenEvent(
EVENT_ALL_ACCESS,
FALSE,
TEXT("WriteEvent")
);
if (g_hWriteEvent == NULL) {
printf("OpenEvent error (%d)\n", GetLastError());
return 0;
}
// while (1);
WaitForSingleObject(g_hWriteEvent, INFINITE);
return 0;
}
行のコメントを外すとwhile(1)
、windbgはプロセスが_tmain
関数でブロックされていることを認識できることに注意してください。
ありがとう。置き場