这里有人使用Linux主机/ VMWare / VirtualKD调试环境吗?

时间:2012-03-17 10:53:40

标签: windows linux debugging virtual-machine

有没有人在运行VMWare Workstation 8(使用Win7访客)的Linux主机上设置VirtualKD成功经验?

尽管事实上有很多令人赞赏的关于VirtualKD的“速度”和“其他好处”的评论,其中大多数来自Windows / VirtualBox用户,我真的不想浪费时间去尝试获取它处理不受支持的配置。

P.S。官方VirtualKD论坛有一个类似的帖子still unanswered两年,所以决定在这里要求评论。

P.P.S。我的实际问题是VMWare的基于套接字的COM端口调试非常慢..将调试对象的调试输出复制到调试器机器需要10到20倍的时间,而不是将相同的输出打印到DbgView。

2 个答案:

答案 0 :(得分:0)

  

有没有人在运行VMWare Workstation 8(使用Win7访客)的Linux主机上有成功的VirtualKD设置经验?

VirtualKD是一个仅限Windows的应用程序。论坛上的海报通过将Unix套接字重定向到TCP来解决它仅限Windows的问题,因此允许Windows客户端通过网络进行连接。

我已使用socat使用tcp套接字成功桥接两个VM。我在/tmp创建了管道,并在它们之间运行socat;然后一个VM可以调试另一个。

在我的情况下,因为我将调试器配置为使用串行连接,所以我受到串行连接速率的限制。我还没有尝试过VirtualKD风格的设置;但是,我的赌注是它不起作用。从VirtualKD explanation of its internals on VMWare开始,客户端代码基本上使用管理程序提供的功能。 VirtualBox必须由VirtualKD修补;我希望这是为VirtualBox客户端提供这样的功能。

坏消息是,这最终意味着Linux主机虚拟机管理程序(主机上的VMware / VirtualBox)必须知道处理该信息并将其传递到适当的位置。默认情况下,它不知道如何执行此操作。

答案 1 :(得分:0)

如果有人正在寻找它,我有在 Windows 上运行它的成功经验:

  1. 安装 VirtualBox 5.x 或更低版本并使用 Windows .iso SATA 设备创建虚拟机并进行设置

  2. 下载VirtualKD-3.0

  3. 打开虚拟机并在来宾上运行 vminstall.exe

  4. 在来宾的 admin cmd 上:bcdedit /dbgsettings SERIAL DEBUGPORT:1 BAUDRATE:115200

  5. 关闭虚拟机,关闭 VirtualBox 并杀死 VBoxSVC.exe 进程

  6. 运行 VirtualIntegration.exe。如果它崩溃了,打开一个 admin cmd 和 cd 到 C:\Program Files\Oracle\VirtualBox 然后输入 vboxmanage setextradata <VMNAME> VBoxInternal/Devices/VirtualKD/0/Config/Path <VirtualKD-3.0 folder>vboxmanage setextradata Windows7 VBoxInternal/Devices/VirtualKD/0/Config/Path C:\Users\lewis\Downloads\VirtualKD-3.0

  7. 打开vmmon64.exe并设置调试器路径即C:\Program Files\Debugging Tools for Windows (x64)\windbg.exe,然后选择WINDBG.EXE并自动启动调试器

  8. 启动 VM 并突出显示 VirtualKD 条目,然后按 f8 并禁用驱动程序签名强制,您很快就会在 nt!RtlpBreakWithStatusInstruction 处进入调试器,这是第一个地址的调试器符号DbgBreakPointWithStatus,从 InitBootProcessor 调用,这是您从 sxe ibp;.reboot 获得的断点。有一个较早的断点 sxe ld:nt

您需要对 VM 取消修补,以便能​​够在不打开 vmmon 的情况下启动它。 VirtualKD 适用于记录调试协议数据包和自动化 windbg 连接,但您无法使用它启动调试。为了启动调试工作,您需要在 VM 上创建一个 COM1 串行端口并将其设置为创建管道 \\.\pipe\pipename。然后您需要手动通过windbg 连接到管道。确保您在启动前已对客户机执行 bcdedit /bootdebug /on && bcdedit /bootdebug {bootmgr} /on && bcdedit /set {bootmgr} debugtype serial && bcdedit /set {bootmgr} baudrate 115200 && bcdedit /set {bootmgr} debugport 1