Linux 机器在启动和运行软件(包括自定义驱动程序)后几个小时就死机了。我正在寻找一种调试此类问题的方法。最近,Linux 内核调试技术有了重大进展,不是吗?
我恳请分享一些关于这个主题的经验。
最佳答案
如果您可以在 VM 中重现该问题,确实有一种可能有用的相当新的 (AFAIK) 技术:从运行虚拟机的主机调试虚拟机。
例如看这个: Debugging Linux Kernel in VMWare with Windows host
VMware Workstation 7 还启用了一项强大的技术,让您可以确定地记录系统执行情况,然后根据需要重放,甚至可以倒放。因此,一旦系统崩溃,您就可以倒退并查看当时发生了什么(甚至尝试更改某些内容并查看它是否仍然崩溃)。 IIRC 我在某处读到你不能同时使用 VMware/gdb 调试内核。
显然,为此您需要一个 VMM。我不知道除了 VMware 的 VMM 系列之外还有什么 VMM 支持这个,我也不知道是否有任何免费的 VMware 版本支持这个。可能不会;人们真的不能指望一家商业公司免费赠送所有东西。试用版为 30 天。
如果您的自定义驱动程序用于机器内部的硬件,那么我想这可能行不通。
关于linux - 当前的 Linux 内核调试技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762253/