Debugging Linux内核模块调试

Debugging Linux内核模块调试,debugging,module,linux-kernel,Debugging,Module,Linux Kernel,有什么方法可以调试Linux内核模块吗?我正在寻找一种基于GUI的工具,如用于用户进程的工具?如果您可以在虚拟机中运行内核,VMware Workstation允许您调试正在运行的内核。对于其他VM平台,您可能也可以这样做,尽管我不熟悉这些平台 还有一种在裸硬件上调试内核的方法。通过目标计算机的串行端口连接到目标计算机。我已经使用了一点,它很有效,但VMware做得更好。现代内核已经将KGDB合并到主线中,所以您不需要进行修补 这并不能完全回答您的问题,因为GDB本身并不完全是一个基于GUI的工

有什么方法可以调试Linux内核模块吗?我正在寻找一种基于GUI的工具,如用于用户进程的工具?

如果您可以在虚拟机中运行内核,VMware Workstation允许您调试正在运行的内核。对于其他VM平台,您可能也可以这样做,尽管我不熟悉这些平台

还有一种在裸硬件上调试内核的方法。通过目标计算机的串行端口连接到目标计算机。我已经使用了一点,它很有效,但VMware做得更好。现代内核已经将KGDB合并到主线中,所以您不需要进行修补


这并不能完全回答您的问题,因为GDB本身并不完全是一个基于GUI的工具。您必须找到一些GUI调试器,这些调试器使用GDB的存根协议进行调试,或者用可用的界面包装GDB。

如果您可以在虚拟机中运行内核,VMware Workstation允许您调试正在运行的内核。对于其他VM平台,您可能也可以这样做,尽管我不熟悉这些平台

还有一种在裸硬件上调试内核的方法。通过目标计算机的串行端口连接到目标计算机。我已经使用了一点,它很有效,但VMware做得更好。现代内核已经将KGDB合并到主线中,所以您不需要进行修补


这并不能完全回答您的问题,因为GDB本身并不完全是一个基于GUI的工具。您必须找到一些GUI调试器,它使用GDB的存根协议进行调试,或者用一个可用的接口包装GDB。

是的,如果您需要GUI,则需要虚拟化和kgdb。例如,VirtualBox运行linux,内核模块要调试,主机是另一个linux


我已经为Linux和OpenSolaris完成了这项工作,我必须说VirtualBox在理解内核中发生的事情方面非常出色。

是的,如果你想要GUI,那么就需要虚拟化和kgdb。例如,VirtualBox运行linux,内核模块要调试,主机是另一个linux


我已经为Linux和OpenSolaris完成了这项工作,我必须说VirtualBox在理解内核中发生的事情方面非常出色。

感谢您的回复,但实际上我已经测试了这项补救措施,但由于编译器优化,内核的更新版本生成的vmlinux dos没有任何调试信息!我找不到任何方法来禁用它。@amrzar:如果您的二进制内核/模块没有调试信息,您将找不到任何可以帮助您的通用调试器。幸运的是,调试信息确实存在。如果您使用的是发行版的内核,请通过google查找调试包。如果您正在编译自己的内核,请查看“内核黑客”菜单中的“使用调试信息编译内核”。感谢您的回复,但实际上我已经测试了此补救措施,但由于编译器优化,生成的vmlinux dos没有任何调试信息!我找不到任何方法来禁用它。@amrzar:如果您的二进制内核/模块没有调试信息,您将找不到任何可以帮助您的通用调试器。幸运的是,调试信息确实存在。如果您使用的是发行版的内核,请通过google查找调试包。如果您正在编译自己的内核,请查看“内核黑客”菜单中的“使用调试信息编译内核”。