我正在尝试在单个WinDbg实例中调试两个进程。
我想运行其中一个流程,但g
似乎与所选流程无关(|0s
,|1s
)。我可以使用~6g
语法运行单个线程,在这种情况下,其他线程被冻结。但是,即使Thread 6现在正在运行,WinDbg命令提示符现在也被禁用,因此我无法启动其他线程。
我还注意到,当两个进程中的一个结束时,WinDbg无法再执行g
。 WinDbg然后说它找不到要运行的东西:
0:000> |0s
0:000> k
# ChildEBP RetAddr
00 0113f97c 000a58be ComparativeDebugging!main+0x97 [c:\...\comparativedebugging.cpp @ 13]
[...]
0:000> g
^ No runnable debuggees error in 'g'
0:000> |
. 0 id: 10e0 create name: ComparativeDebugging.exe
# 1 id: 1eec exited name: ComparativeDebugging.exe
0:000> |1s
[...]
1:004> k
# ChildEBP RetAddr
00 00cff938 77027dde ntdll!NtTerminateProcess+0xc
[...]
1:004> |0s
[...]
0:000> g
^ No runnable debuggees error in 'g'
0:000> ~0g
^ No runnable debuggees error in '~0g'
如您所见,进程0仍在main()
中,进程1已终止。我找不到让流程0运行到最后的方法。
另一个问题是我无法从进程1(已经结束)中分离出来,但我可以从进程0中分离出来:
1:004> .detach
Detached
1:004> .detach
Detached
1:004> .detach
Detached
1:004> |
0 id: 10e0 create name: ComparativeDebugging.exe
. 1 id: 1eec exited name: ComparativeDebugging.exe
1:004> |0s
[...]
0:000> g
^ No runnable debuggees error in 'g'
0:000> .detach
eax=00000000 ebx=770da920 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=77046e9c esp=00cff93c ebp=00cffa14 iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206
ntdll!NtTerminateProcess+0xc:
77046e9c c20800 ret 8
Detached
1:004> |
. 1 id: 1eec exited name: ComparativeDebugging.exe
接下来不起作用的是.restart
。根据文件
如果调试器最初创建了应用程序,CDB和WinDbg可以重新启动目标应用程序。即使目标应用程序已关闭,也可以使用.restart命令。
在我的情况下,我已经使用WinDbg启动了两个应用程序(一个通过文件/打开可执行文件,另一个通过.create
),我希望我可以单独重启它们。但是,当我发出.restart
命令时,WinDbg终止所有进程,只重新启动使用File / Open Executable启动的进程。
0:000> .create c:\...\ComparativeDebugging.exe
[...]
Create will proceed with next execution
0:000> g
[...]
0:000> |
. 0 id: 1fa0 create name: ComparativeDebugging.exe
1 id: 3a20 create name: ComparativeDebugging.exe
0:000> |1s
1:004> .restart
CommandLine: "C:\...\ComparativeDebugging.exe" 5
[....]
ntdll!LdrpDoDebuggerBreak+0x2b:
7707ccbc cc int 3
0:000> |
. 0 id: 3580 create name: ComparativeDebugging.exe
我做错了什么或者在WinDbg中严重破坏了多目标调试?
我在Windows 10上使用WinDbg 10.0.10586.567 x86。