在Virtual Box中调试客户操作系统的工具

13

我只是在虚拟机论坛上发布了同样的问题。http://forums.virtualbox.org/viewtopic.php?f=9&t=26702&p=119139#p119139

如果不违反任何规定,我很想了解更多信息,因为stackoverflow承诺更加动态!

“嗨, 我进行了一些搜索,但找不到任何工具可以在虚拟盒子中从早期引导调试客户系统。尽管我遇到了JCP,这是一个不太强大和美丽的Java x86模拟器,但它有调试模式,可以查看物理内存,CPU寄存器以及其他内容。它还可以逐步执行CPU指令并设置断点,监视点和条件点。虚拟盒子中是否有这样的东西?

我认为在运行时检查系统会很棒。无论是学习PC架构还是作为开发内核的工具。
如果你认为这是个好主意(我认为是),那么如何实现呢?我对开发这样的工具很感兴趣,想知道是否可行,如果没有在其他地方实现。”

EDT:现代x86能否在一个CPU周期之后立即中断其执行并将执行地址传递给另一个代码来执行此操作?是的,陷阱标志可以设置为将处理器置于逐步执行模式。 x86将执行一个指令并调用INT 3。


1
QEMU具有良好的GDB支持:https://dev59.com/TGgu5IYBdhLWcg3wUlnt#33203642 - Ciro Santilli OurBigBook.com
2个回答

12
与上述所述相反,VirtualBox现在包含一个(有限的)调试器。在启动虚拟机时,在命令行中添加--dbg。有关更多信息,请参阅:12.1.3.内置VM调试器

挺酷的东西!尽管根据我的初步实验,它似乎仍然有点buggy。 - Jonathon Reinhart

7

OSDev wiki 上有一些关于调试客户操作系统的有用信息,但是根据这个页面的说法,VirtualBox目前没有调试器。我一直在使用带有GDB stub的QEmu,并且它非常好用,所以您可能想尝试使用它。


Gdb能够检查客户机内存并指向客户机IP吗?据我所知,VirtualBox基于QEMU,因此拥有良好的界面不应该是不可能的。对吧? - Ruben Trancoso
没错,当我使用它时,你可以做所有正常的GDB操作,比如设置断点、检查寄存器和列出内存位置。不过很抱歉,我没有使用VirtualBox的经验,所以无法告诉你它是否可行。 - Mark Pim
它也能理解调试符号吗?我正在考虑使用像DDD这样的漂亮界面,但我使用的是Windows,似乎没有移植版。 - Ruben Trancoso
我明白了,它也像正常的调试会话一样理解符号。太棒了!http://wiki.osdev.org/QEMU - 感谢Mark的帮助。 - Ruben Trancoso
我发现WinGDB可以为Visual Studio添加gdb调试功能,这样就可以结束了。 - Ruben Trancoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接