我正在尝试使用VirtualBox和WinDBG进行Windows内核调试。但是,每当我遇到一个断点时,虚拟机的CPU使用率就会飙升,而CPU寄存器不会显示在WinDBG中。我做错什么了吗?

我做了什么:


boot.ini中我设置了/debugport=COM1 /baudrate=115200COM1;
在WinDBG文件中> \.\pipe\debug> Kernel Debug...选项卡:选中“管道”复选框,然后为COM;

在WinDBG中找到调试会话,我可以打断点我可以单步执行代码,可以在“反汇编窗口”中查看反汇编的代码,也可以在“内存窗口”中查看内存位置。但是WinDBG的“注册窗口”中没有任何显示。 br />我真的不确定在哪里寻找该问题的答案,有人可以向我指出正确的方向吗?

对于其他有此问题或试图学习内核调试的人,我使用了以下教程介绍了到目前为止的应用:Windows内核调试技巧(Virtualbox文档);如何为WinDbg配置内核调试(博客文章)。


评论

不知道在哪里看?首先尝试使用其他虚拟化软件查明原因。

#1 楼

您应该尝试VirtualKD,它使用特定于VM的快速机制与调试器进行通信,而不是慢速串行端口仿真。另一个选项可能是基于以太网或USB的调试,但是我不确定如何使用VM进行设置...

评论


两者中较好的答案。希望这个被接受。

– 0xC0000022L♦
17年8月30日在21:23

基于以太网-与在物理计算机上进行设置的方式相同,但是与OP所说的相比,它需要较新的目标Windows版本。

– conio
17年9月2日在21:56

#2 楼

解决了这是一个两部分的问题。


Avast防病毒软件将VM减慢到爬网的速度
解决方案卸载avast或在某些情况下,禁用该选项:“设置”>故障排除>“启用硬件辅助的可视化”
调试旧版本的Windows时,在较新版本的WinDBG中存在错误。 cpu注册而不是使用“注册窗口”,或使用WinDBG插件来解决此问题
https://stackoverflow.com/questions/35961246/windbg-not-showing-register-values