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

can WinDbg connect to stdin of a debuggee which is running remotely

我很难使用 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 命令选项,但结果证明这不是我的解决方案。有人可以建议我如何实现这一目标。

上面的伪代码没有表达您的意图。

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

如果您想在远程机器上调试可执行文件 运行,您可以连接到远程机器以使用远程调试连接会话。

下面列举的示例设置使用远程调试会话

在远程机器中调试calc.exe运行

主机----------------物理机xp sp3 32位
target----------------虚拟机xp sp3 32位
网络----------------环回适配器

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

添加了屏幕截图以防所写内容听起来乱七八糟