WinDbg中是否打破了多目标调试?

时间:2016-08-12 17:01:47

标签: debugging windbg

我正在尝试在单个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。

0 个答案:

没有答案