【发布时间】:2018-08-26 08:17:04
【问题描述】:
我在我的 virtualbox 上安装 Win7,设置来宾端一个标准的“bcdedit”。 (debugtype=serial, port=1, baudrate=115200 /debug=on)
采取了以下步骤:
- 在host端,我给guest系统分配了一个虚拟串口
- 使用命名管道“\.\pipe\debug”设置它。
- 我启动 Windbg 连接“\.\pipe\debug”,我得到“无法打开管道 Win32 错误 0n2”
- 打开guest机器后,我重新打开Windbg,它工作正常,但只是说“Opend \.\pipe\debug Waiting to reconnect...”,似乎没有与Guest机器通信的调试数据。
- 我尝试“bcdedit /bootdebug on”,然后重新启动机器。这次我在启动过程中看到了 Windbg 的几个输出。
BD:启动调试器已初始化连接到 Windows 启动调试器 7601 x64 目标(2018 年 3 月 17 日星期六 17:28:46.559 (UTC + 8:00)),ptr64 TRUE 已建立内核调试器连接。 ************* 路径验证摘要 ************** 响应时间 (ms) 位置延迟
srvC:\Symbolshttp://msdl.microsoft.com/download/symbols 符号 搜索路径是: srvC:\Symbolshttp://msdl.microsoft.com/download/symbols 可执行文件 搜索路径为:GetXStateConfiguration() 中的 ReadVirtual() 失败 第一次读取尝试(错误 == 997。Windows 启动调试器内核版本 7601 UP Free x64 Machine Name: Primary image base = 0x000000000052d000 Loaded module list = 0x00000000005df9e0 系统 正常运行时间:不可用 关闭发生在(3 月 17 日星期六 17:28:53.382 2018 (UTC + 8:00))...卸载所有符号表。
证明“\.\pipe\debug”可以传输Guest VM的COM1的输出。
- 进入登录控制台时,我看到这样的消息,之前的输出变成灰色:
****************** 路径验证摘要 ************** 响应时间 (ms) 位置延迟
srvC:\Symbolshttp://msdl.microsoft.com/download/symbols 等待 重新连接...
我登录并检查设备管理器,我找不到设备 COM1。但是如果我关闭/debug,我可以。(确实,我使用putty检查Guest'COM1和Host的原始文件,我发现它也可以,将putty的输入写入Host的文件)
我用不同的 COM 和波特率尝试了很多次,总是得到相同的输出。
我尝试了类似的 VMware Station,得到了相同的结果。
更换主机并重新执行上述步骤后问题消失。(:
问题:
- 为什么在来宾计算机上看不到打开 /debug 的 COM1 设备?
- 波特率重要吗? (Host 的 windbg 设置、Guest 的 Device 设置和 Guest 的 debug 设置不匹配),我尝试在 Windbg 中“循环波特率”,它说 Net COM 端口波特率被忽略。
- 如何诊断问题?
_编辑:
我发现了一个类似的帖子stuck on "reconnecting" 这个问题My Kernel Debugger Won’t Connect 提到有一个热键“Ctrl+Alt+D”来显示 Windbg 的 I/O 的详细信息,而不是黑盒。而且如帖子所说,“/debug=on”时COM1消失是正常和合理的。
我可以看到 windbg 为同步来宾付出的努力。按“ctrl+break”后,我看到windbg说“Send Sync”,但仍然卡住……而且,我将按“Host+Q”关闭guest。奇迹发生了。 Windbg活过来,成功闯入。
我尝试了几次,没有失败。现在我可以愉快地工作了……但是为什么呢???
当我按下“Ctrl+break”时,windbg 会说
发送同步中断
发送中断 ...
卡住了,目标机器也暂停了。然后按“Host+Q”再按“Esc”就可以了。
【问题讨论】:
标签: serial-port kernel virtualbox windbg remote-debugging