内核 - 从 linux 系统调试 windows 来宾系统 - 安装程序不工作

Kernel-Debugging a windows guest system from a linux system - Setup not working

我正在尝试在我的 Guest - WindowsXP OS

上对应用程序进行内核调试

我的 host 是 Ubuntu 14.04 x64,安装了 VMware Workstation 12。

Debugger Guest osWindows 7,安装了 WinDBG。

我读过 vmware 的这篇文章: https://www.vmware.com/support/ws55/doc/ws_devices_serial_advanced_example_debugging.html

https://www.vmware.com/support/ws55/doc/ws_devices_serial_2vms.html

我按照文章中的理解配置了我的机器,但它无法正常工作。有一件事我不太明白,这可能是我的问题,NamedPipe 应该配置成什么? 我应该使用 \.\pipe\[NAME] 语法还是 /tmp/[NAME] 语法?

显然,在 Windows 7 - Debugger 机器中,它无法识别 /tmp/[Name] 机器。那么是哪一个呢?

这是我的配置:

WindowsXP(调试客os):

  1. 使用套接字(命名管道)
  2. \\.\pipe\DebugPort
  3. 从:服务器到:虚拟机
  4. 投票CPU

bootcfg

Boot Loader Settings
--------------------
timeout: 30
default: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

Boot Entries
------------
Boot entry ID:   1
Friendly Name:   "Microsoft Windows XP Professional"
Path:            multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optin /fastdetect /debug /debugport=COM1: /baudrate=115200

Windows7(带WinDBG的调试器)

  1. 使用套接字(命名管道)
  2. \\.\pipe\DebugPort
  3. 从:客户端到:虚拟机
  4. 投票CPU

现在在我的 Windows7 上打开 WinDBG,按 CTRL + K 选择 KernelDebugging 选项,转到“COM”选项卡并配置为以下:

  1. 波特率:115200
  2. 端口:\\.\pipe\DebugPort
  3. 管道[选中]
  4. 重新连接[选中]

现在重置 Guest XP os 没有任何结果.. 我在我的 WinDBG 客户端上没有得到任何东西 我错过了什么?我的端口命名约定是否错误,因为我使用的是 linux host?

您已经在运行某种 linux 的单个物理主机内的两个独立虚拟机中安装了两个 windows 操作系统 如果是这种情况并且您更喜欢使用命名管道

1) edit the boot.ini in xp (no bcdsettings available in xp guest) 
2) add a serial port on both the virtual machines 
3) use named pipe \.\pipe\com_1  on both virtual machines
4) assign one end as server and other end as virtual machine in first vm
5) assign one end as client and other end as virtual machine in second vm
6) restart

这个link有一些花哨的废话,但你可以参考图片
http://www.woodmann.com/forum/entry.php?234-connect-two-virtual-machines-on-one-physical-host-and-use-wdeb386-to-debug-win98-app

我可以在这里看到一些问题

  1. 使用 linux 格式 pipes/sockets - /tmp/,例如/tmp/dbg,如果您的主机 OS 是 linux
  2. 在 windbg(调试器系统)中,只需提及端口名称,即 COM1,而不是完整的管道名称(在主机 OS 本身而不是跨 VM 调试时使用)
  3. 在 windbg(调试器系统)中,取消选中管道
  4. 此外,调试器不需要 "Yield CPU on poll" 选项(Windows 7,此处)

我能够在 Ubuntu 14.04 和工作站 11.1.3

上跨 Windows 7 个虚拟机(一个调试器和另一个被调试器)连接 windbg