【问题标题】:Windbg never enters the process being debuggedWindbg 从不进入被调试的进程
【发布时间】:2014-04-30 05:16:14
【问题描述】:

我有一个 Windbg (x86) 的新副本,并编写了一个简单的 Hello World 程序来测试调试器。加载可执行文件或附加进程时出现问题,调试器从不进入进程。

以下是地址示例:

ModLoad: 013c0000 013c6000   Hello World.exe
ModLoad: 76eb0000 77030000   ntdll.dll
ModLoad: 75ab0000 75bc0000   C:\Windows\syswow64\kernel32.dll
ModLoad: 74d60000 74da7000   C:\Windows\syswow64\KERNELBASE.dll
ModLoad: 70980000 70a6e000   C:\Windows\SysWOW64\MSVCR120.dll

加载进程后,我按 F11(步入)单步执行以查看正在执行的每条指令。据我所知,Windbg 从不显示 Hello World.exe 的指令,即使它确实执行了它。

可能是什么问题,我将如何解决?

【问题讨论】:

    标签: windbg


    【解决方案1】:

    如果您开始单步执行 Open Executable,您将有“很长的路要走”,因为它从 Windows 代码内部开始。 使用 X 命令查找主地址,名称可能会根据您用于制作程序的工具而有所不同,但请尝试使用通配符 *main*

    您可以在程序的 main 中设置一个中断并输入 g(go),从这里您可以逐步了解您的代码。这是我的 SimpleCrash.exe 的示例

    000> x SimpleCrash!*main*
    *** WARNING: Unable to verify checksum for SimpleCrash.exe
    011e8020 SimpleCrash!__native_dllmain_reason = 0xffffffff
    011e8138 SimpleCrash!mainret = 0n0
    011e1a00 SimpleCrash!wmain (int, wchar_t **)
    0:000> bp 011e1a00 
    0:000> g
    Breakpoint 0 hit
    eax=00419ed8 ebx=7efde000 ecx=00417f10 edx=00000001 esi=00000000 edi=00000000
    eip=011e1a00 esp=0030f9dc ebp=0030fa28 iopl=0         nv up ei pl nz na po nc
    cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
    SimpleCrash!wmain:
    011e1a00 55              push    ebp
    

    这里我在我的 SimpleCrash 主函数中,可以将堆栈观察到 windows 代码中

    0:000> k
    ChildEBP RetAddr  
    0030f9d8 011e1959 SimpleCrash!wmain 
    0030fa28 011e1b4d SimpleCrash!__tmainCRTStartup+0x199 [f:\dd\vctools\crt_bld\s
    0030fa30 7548336a SimpleCrash!wmainCRTStartup+0xd [f:\dd\vctools\crt_bld\self_
    0030fa3c 77859f72 kernel32!BaseThreadInitThunk+0xe
    0030fa7c 77859f45 ntdll!__RtlUserThreadStart+0x70
    0030fa94 00000000 ntdll!_RtlUserThreadStart+0x1b
    

    【讨论】:

    • 这行得通,但是为什么我从一开始就单步,我从来没有到达过main?
    • @drum 你会的,但正如答案所述,在main 运行之前需要运行很多序言代码。
    • 正如我在 OP 中所说,我确实逐步执行了每条指令,但从未到达 main,但 main 仍然执行。我能够单步执行的唯一代码是 ntdll!。
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2011-11-10
    相关资源
    最近更新 更多