在没有GDB的板上调试Linux内核

时间:2016-06-30 03:08:13

标签: c linux-kernel embedded linux-device-driver embedded-linux

我完全是一个在板上开发驱动程序的新任务,它使用了一个"小" Linux操作系统。每次我做出一切并得到一个" .bin"在PC上然后ftp" .bin"对于董事会,系统将正常工作。

现在问题来了。我检查了系统,它不能使用gdb。所以当系统崩溃时,它只会提供一个核心转储文件,它会给出凌乱的地址信息(似乎没有帮助,或者至少我不知道如何使用它)。

任何有经验的嵌入式开发者都可以提出一些建议吗?你如何在工作中调试?

顺便说一下,如果控制台打印崩溃信息包括堆栈信息和呼叫追踪,没有epc和ra(我刚学会了)。可以找到epc(崩溃的地址)吗?

1 个答案:

答案 0 :(得分:2)

许多内核开发人员(包括我自己)在开发设备驱动程序时都不使用调试器。多年来,Linux不支持内核调试。即使是现在,并非所有CPU架构都支持内核调试。

您可以做的最简单的事情之一是使用printk将事件记录到控制台。此外,增加控制台UART速度。我经常使用115200波特。

对于某些CPU架构,Linux内核现在支持kgdb。

我也强烈建议Linux内核开发人员阅读这两本书: