2

以下は私のプログラムであり、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関数でブロックされていることを認識できることに注意してください。

ありがとう。置き場

4

1 に答える 1

2

これは、64ビットOSで実行されているWow6432ビットプロセスのようです。32ビットのWindbgではなく、64ビットのWindbgをプロセスに接続していることを確認してください。

于 2009-10-28T02:32:07.333 に答える