最新消息:

kgdb调试内核模块

kernel admin 2820浏览 0评论

kgdb的详细用法就不多说了,只说说怎么调试内核模块,因为内核模块的符号地址信息并没有包含在vmlinux里,所以需要载入模块的信息:

gdb加载内核模块的命令为:

1
add-symbol-file FILE ADDR

找到ADDR最直接的方法就是:在插入模块之前,在kernel/module.c中设置一个断点,因为函数module_alloc_update_bounds返回的是模块的地址:

1
<span style="color: #0000dd;">2097</span> ptr <span style="color: #339933;">=</span> module_alloc_update_bounds<span style="color: #009900;">(</span>mod<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>core_size<span style="color: #009900;">)</span><span style="color: #339933;">;</span>

所以:

1
<span style="color: #c20cb9; font-weight: bold;">gdb</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; b kernel<span style="color: #000000; font-weight: bold;">/</span>module.c:<span style="color: #000000;">2097</span>

这样你就可以看到模块的地址了,后面就好办了,你可以在模块里的任意函数设断点了。

转载请注明:爱开源 » kgdb调试内核模块

您必须 登录 才能发表评论!