使用 vmware 机器进行内核调试

til*_*man 2 windows debugging windbg

我正在使用 windbg 开始使用 vmware windows 机器进行内核调试。我提到

https://msdn.microsoft.com/en-us/library/windows/hardware/ff538143(v=vs.85).aspx

但我没有成功。我有两个问题。

1)。通过这样的命令启动windbg后:

**windbg -k com:port=\\10.57.43.22\pipe\debug,pipe**
Run Code Online (Sandbox Code Playgroud)

它会显示:

**Fail to open \\10.57.43.22\pipe\debug
Kernel debugger failed initialization, Win32 error On1326
"Logon failure: unknown user name or bad password"**
Run Code Online (Sandbox Code Playgroud)

是什么原因?我没有空间输入用户名或密码。

2)。在msdn文章中,它说:

在虚拟机中,配置 COM 端口以映射到命名管道。

我在 vmware 虚拟机上添加了一个使用命名管道的串行端口。如何将 COM 端口映射到管道?

Nei*_*tsa 6

串口调试和网络调试是两件不同的事情。

要调试 VMWARE 虚拟机,将 COM 端口添加到 VM 后,然后在 VM 设置中:

COM 端口设置

注意:

  • 命名管道的名称是\\.\pipe\com_port(您可以在 之后使用任何您想要的\\.\pipe\
  • COM 端口号为2(请参见图中左侧窗格中提到的“串行端口 2 ”)
  • 带有this end is the server和的两个保管箱the other end is an application

根据文档,关于“Yield CPU on Poll”:

如果受影响的虚拟机尝试执行的唯一任务是轮询虚拟串行端口,则此配置选项会强制受影响的虚拟机让出处理器时间。

不要忘记使用 bcdedit 配置 Windows VM:

bcdedit /debug on
bcdedit /dbgsettings serial debugport:2 baudrate:115200
Run Code Online (Sandbox Code Playgroud)

完成后重新启动您的虚拟机。在这种情况下,我使用串行端口 2(通常,打印机使用 VMWARE 中的第一个 COM 端口)。

使用如下命令行启动 Windbg:

windbg -k com:pipe,port=\\.\pipe\com_port,resets=0,reconnect
Run Code Online (Sandbox Code Playgroud)

或者,一旦在 Windbg 上,使用 CTRL+K,然后:

Windbg COM 端口设置

您应该能够对您的 VM 进行内核调试。

  • 我只想说,这是我发现的唯一一个与 vmware 工作站完美配合进行内核调试的教程。我相信这里的关键是您使用的是 com2 而不是普通的 com1。Vmware 并没有很清楚地说明这一点。 (2认同)