可以WinDbg连接到远程运行的调试对象的标准输入

时间:2015-07-21 08:05:17

标签: c++ visual-studio-2013 windbg

我很难用WinDbg控制我的应用程序,我已经发布了我的问题here并离开了这种方法,因为我无法找到如何实现的方法那。 现在我正在研究断点被击中后的方法,我想分出我的应用程序执行并提示运行调试器的用户的输入。

DWORD dwRand = 0;
volatile bool bDebug = false;
if (!bDebug)
{
    dwRand = Rand(minValue, maxValue);
}
else
{
    cout << "\n Enter dwRand: ";
    cin >> dwRand;
}
return dwRand;

所以我的想法是设置bDebug并从用户那里获取输入,这样我就可以继续执行其他线程并等待用户输入。 我发现这些链接1 2 3正在解释该技术,但我想附加到已经远程运行的进程。我尝试使用WinDbg命令选项,但这对我来说并不是解决方案。有人可以建议我如何实现这一点。

1 个答案:

答案 0 :(得分:4)

上面的伪代码并未表达您的意图。

我不确定为什么需要内核调试连接来远程调试可执行文件(引用查询中的链接)

如果要调试在远程计算机上运行的可执行文件,可以连接以使用远程调试连接会话。

下面列举的示例设置使用远程调试会话调试在远程计算机上运行的calc.exe

主机-----------------物理机xp sp3 32位
目标---------------虚拟机xp sp3 32位
network -------------- Loop back Adapter

C:\>net view | grep -i xp & echo kd wont connect target not booted with /DEBUG
\\XPSP3VM
kd wont connect target not booted with /DEBUG

C:\>kd -k com:pipe,port=\\.\pipe\debugPipe,resets=0,reconnect
Opened \\.\pipe\debugPipe
Waiting to reconnect...
^B   <---------force exit
"lets run windbg -server npipe:pipe=\\.\pipe\debugPipe -v calc.exe 
in the target machine and connect to it with cdb -server:xxxx from host

C:\>cdb -remote npipe:server=xpsp3vm,pipe=\\.\pipe\debugPipe
Connected to server with 'npipe:server=xpsp3vm,pipe=\\.\pipe\debugPipe'

CommandLine: calc.exe  (mapped shared folder in host)
Symbol search path is: srv*z:\*http://msdl.microsoft.com/download/symbols

7c90120e cc              int     3
\Admin (npipe \\.\pipe\debugPipe) connected at Wed Jul 22 11:49:41 2015
0:000> .echo "yay we are remote debucking now"
yay we are remote debucking now
0:000> lm m calc*
start    end        module name
01000000 0101f000   calc       (deferred)
.clients
\Admin (npipe \\.\pipe\debugPipe), last active Wed Jul 22 11:54:19 2015
HostMachine\HostUser, last active Wed Jul 22 11:44:06 2015
0:000> kb
ChildEBP RetAddr  Args to Child
0007fb1c 7c9402ed 7ffde000 7ffdf000 00000000 ntdll!DbgBreakPoint
0007fc94 7c91fad7 0007fd30 7c900000 0007fce0 ntdll!LdrpInitializeProcess+0x1014
0007fd1c 7c90e457 0007fd30 7c900000 00000000 ntdll!_LdrpInitialize+0x183
00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7
0:000> .echo "only echo is echoed all other aw are dumped here"
only echo is echoed all other aw are dumped here

添加了一个屏幕截图,以防所写内容发出嘟嘟声enter image description here