Win7的调试模式无法在VirtualBox的客户机

时间:2018-03-17 10:01:24

标签: serial-port kernel virtualbox windbg remote-debugging

我在我的虚拟机上安装Win7,将客户端设置为标准" bcdedit" s。 (debugtype = serial,port = 1,baudrate = 115200 / debug = on)

采取以下步骤:

  1. 在主机端,我将虚拟串行端口分配给来宾系统
  2. 使用named-pipe" \。\ pipe \ debug"。
  3. 设置它
  4. 我启动Windbg以连接" \。\ pipe \ debug",我得到"无法打开管道Win32错误0n2"
  5. 打开客户机后,我重新打开Windbg,它工作正常,但只是说"打开\。\ pipe \ debug等待重新连接...",似乎没有调试数据与Guest Machine沟通。
  6. 我尝试" bcdedit / bootdebug on",然后重启机器。这次我在启动时看到Windbg的几个输出。
  7.   

    BD:初始化的Boot Debugger连接到Windows Boot Debugger 7601   x64 target at(Sat Mar 17 17:28:46.559 2018(UTC + 8:00)),ptr64 TRUE   已建立内核调试器连接。   *************路径验证摘要**************响应时间(毫秒)位置延迟
      srv C:\ Symbols http://msdl.microsoft.com/download/symbols符号   搜索路径是:   srv C:\ Symbols http://msdl.microsoft.com/download/symbols可执行文件   搜索路径是:GetXirtual()在GetXStateConfiguration()中失败   首次读取尝试(错误== 997.Windows启动调试器内核版本   7601 UP Free x64机器名称:主映像库=   0x00000000 0052d000 Loaded module list = 0x00000000 005df9e0系统   正常运行时间:不可用停机发生在(星期三3月17日17:28:53.382   2018年(UTC + 8:00))...卸载所有符号表

    它证明" \。\ pipe \ debug"可以传输Guest VM的COM1的输出。

    1. 进入登录控制台时,我看到此消息,之前的输出变为灰色:
    2.   

      *************路径验证摘要**************响应时间(毫秒)位置延迟
        srv C:\ Symbols http://msdl.microsoft.com/download/symbols等待   重新连接...

      1. 我登录并检查设备管理器,我找不到设备COM1。但是,如果我关闭/调试,我可以。(事实上,我使用putty检查Guest' COM1与Host的原始文件,我发现它也有效,将putty的输入写入Host' s文件)

      2. 我尝试了多次使用不同的COM和波特率,总是得到相同的输出。

      3. 我尝试了类似的VMware Station,得到了相同的结果。

      4. 我更改主机并重新执行上述步骤后问题消失了。(:

      5. 问题:

        1. 为什么我无法在来宾计算机上看到带有/ debug的COM1设备?
        2. 波士顿是否重要? (主机的windbg设置,访客的设备设置和访客的调试设置不匹配),我试图"循环BaudRate"在Windbg中,它说Net COM端口波特被忽略了。
        3. 如何诊断问题?
        4. _EDIT:

          我发现了一篇类似的帖子stuck on "reconnecting" 这个问题My Kernel Debugger Won’t Connect提到了一个热键" Ctrl + Alt + D"显示Windbg的I / O而不是黑盒子的详细信息。当" / debug = on"" / debug = on" COM1消失是正常和合理的。正如帖子所说。

          我可以看到windbg为同步客人付出的努力。在我按下" ctrl + break"之后,我看到windbg说"发送同步",仍然卡住......而且,我会按下"主机+ Q&#34 ;.发生了奇迹。 Windbg活跃起来并成功闯入。

          我试了几次,没有失败。现在我可以愉快地工作......但为什么???

          当我按下" Ctrl + break"时,windbg说

            

          发送同步中断

               

          发送中断...

          并卡住,目标机器也暂停了。我按下#34; Host + Q" " Esc"那就行了。

1 个答案:

答案 0 :(得分:0)

在物理机中安装vbox(物理机主机以后)
在vbox中安装os(vbox中的os是目标从此) 重新启动目标并查看事情是否进展顺利几次 在Tar​​get

中打开一个提升的命令提示符

因为你还没有创建Debug BootEntry,所以先创建一个

run bcdedit /copy /? for syntax 
to copy current bootentry to a new one you will be using 
bcddedit /copy {current} /d "MyPipeDream" 
{current} is alias for the current boot entry ID a GUID
MyPipeDream is a descriptive string 
if you reboot now you should get two boot entries to choose from 

enter image description here

选择要启动的新bootentry,以便您可以使用 {current} 众所周知的ID进行操作,而不是复制粘贴或错误输入长不直观的guid

假设你启动了MyPipeDream

你可以检查并启用当前id的调试 bcdedit / debug {current} on

你应该重新启动MyPipeDream,现在可以启用调试,如下面的屏幕截图

enter image description here

enter image description here

但在重新启动之前在vbox设置中设置串行接口

也取消选中与现有连接,以便vbox创建管道 而不是尝试连接到现有的管道

目标上的所有设置现已结束

enter image description here

主机上的

创建一个包含以下内容的bat文件并执行它 注意pipename它是pipedream与我们在vbox设置中提供的名称完全匹配而不是MyDreamPipe,这是ID描述性字符串

start windbg -k com:port=\\.\pipe\pipedream,baud=115200,pipe,reconnect,resets=0

windbg应该打开并说要重新连接

在HOST WINDBG中按 ctrl +中断几次,vbox应该连接到windbg或按目标中的ctrl + print屏幕

请查看您是否需要功能键(某些无线键盘,如罗技 需要 ctrl + fn + pause / break 键组合而不是普通的ctrl + break

否则打开Debug菜单并选择Break in UI