【问题标题】:Does anyone here uses Linux host/VMWare/VirtualKD debug environment?这里有人使用 Linux 主机/VMWare/VirtualKD 调试环境吗?
【发布时间】:2012-03-17 10:53:40
【问题描述】:

有没有人在运行 VMWare Workstation 8(带有 Win7 客户机)的 Linux 主机上安装 VirtualKD 有成功经验?

尽管事实有很多关于 VirtualKD 的“速度”和“其他好处”的 cmet,其中大多数来自 Windows/VirtualBox 用户,我真的不想浪费我的时间来尝试获得它适用于不受支持的配置。

附注VirtualKD官方论坛有一个类似的帖子still unanswered已经两年了,所以决定在这里征求意见。

P.P.S.我的实际问题是 VMWare 的基于套接字的 COM 端口调试非常慢。将调试输出从被调试者复制到调试器机器所需的时间比将相同的输出打印到 DbgView 所需的时间多 10 到 20 倍。 p>

【问题讨论】:

    标签: windows linux debugging virtual-machine


    【解决方案1】:

    有人在运行 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)必须知道处理该信息并将其传递到适当的位置。默认情况下,它不知道如何执行此操作。

    【讨论】:

      【解决方案2】:

      如果有人在寻找,我在 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. 关闭VM,关闭VirtualBox并杀死VBoxSVC.exe进程

      6. 运行 VirtualIntegration.exe。如果它崩溃打开一个管理员 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

      您需要取消修补虚拟机才能在不打开 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

      【讨论】:

        猜你喜欢
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 2016-02-22
        • 1970-01-01
        相关资源
        最近更新 更多