【发布时间】:2013-02-20 10:04:54
【问题描述】:
我正在调试 VirtualBox VM 中的驱动程序,WinDbg 通过作为命名管道暴露给主机的 COM 端口连接到目标。
调试工作正常 - 我可以暂停目标、设置断点、单步执行源文件 .etc
当我的驱动程序遇到致命错误时,WinDbg 将以下输出转储到控制台:
*** Fatal System Error: 0x00000050
(0xFFFFF88004126840,0x0000000000000001,0xFFFFF88003E12690,0x0000000000000000)
Driver at fault:
*** MYDRIVER.sys - Address FFFFF88003E12690 base at FFFFF88003E12000, DateStamp 51249ae5
.
Break instruction exception - code 80000003 (first chance)
A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.
A fatal system error has occurred.
Connected to Windows 7 7601 x64 target at (Wed Feb 20 09:57:54.670 2013 (UTC + 0:00)), ptr64 TRUE
Loading Kernel Symbols
...............................................................
................................................................
..............
Loading User Symbols
.....
Loading unloaded module list
.....Unable to enumerate user-mode unloaded modules, Win32 error 0n30
Loading Wow64 Symbols
..........................................................
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 50, {fffff88004126840, 1, fffff88003e12690, 0}
调试器命令行上的小状态框是空白的,调试器不响应我输入的命令。
我想查看调用堆栈并检查机器状态,但调试器仍然没有响应。按 BREAK/CONTINUE 似乎没有任何效果。
我不明白 - 此时调试器的状态是什么?
我怀疑我的整个调试设置非常非常缓慢。
【问题讨论】:
-
您的操作系统崩溃了,当驱动程序崩溃时这很正常。当然,调试器也不再工作了,那个 COM 端口是一只死鹦鹉。您可以从核心转储中获得事后分析。 msdn.microsoft.com/en-us/library/windows/hardware/…
-
我不相信你是正确的。大约五分钟后,调试器确实会唤醒。
-
调试器可能非常慢,尤其是通过 com 端口。还将相关符号文件放在快速、可访问的位置(例如,不在远程网络上),并且不要加载操作系统符号(它们很大,通常从远程主机加载)
-
@icepack 感谢您的建议。你有这方面的参考资料或教程吗?我想我可能正在使用 Microsoft 符号服务器加载操作系统符号。
-
只需从文件->符号文件路径中删除所有您无法识别的引用。只留下您自己的驱动程序符号的路径。
标签: windows debugging driver windbg