2011年4月13日星期三

一种调试内核模块的方法

1. 修改编译用的Makefile文件,增加变量EXTRA_CFLAGS
    EXTRA_CFLAGS := -g3
使得编译出的模块有用于调试的符号等信息。

2. 用objdump做一份综合模块各种信息的文件,包括二进制指令,反汇编生成的指令,还有源码。
    objdump -d -S LKM-To-Debug.ko > objdumped.txt
保存在objdumped.txt

3. 用串口连接被调试的机器,见这里

4. Kernel Oops或者Panic之后,查看从串口dump出来的信息。包括EIP,还有Code段等。利用这些信息和第2步生成的文件(objdumped.txt)进行分析,抓出异常原因,。


可参考文档:
1. Documentation/oops-tracing.txt

没有评论:

发表评论