[176] 如何调试Linux内核模块(驱动)
如何调试Linux系统中的内核驱动,或者LKM?
如何调试Linux系统中的内核驱动,或者LKM?
一直想写一下这个步骤,但是耽误了,抱歉。先以调试i915.ko列出关键步骤吧
1)准备工作
把GDK7中的i915.ko复制到主机的c:\temp目录
可以用如下命令来搜索i915.ko
cd /
sudo find -name i915.ko
2)连接GDK7,开机进入Ubuntu
3)在主机上打开Nano Code,开始内核调试,选择DCI Open,选中Linux和Memory Shadow
4)待工具条上的Break按钮变亮后,点它,把GDK7中断下来
5)在Nano Debugger中执行如下命令
.sympath+ c:\temp
.reload
x i915!render
bm i915!render
6)以上命令,有些可能需要执行一会,请喝一杯茶或者想想开心的事情,耐心等待
7)执行bl,确认设置了一些断点
8)输入g命令恢复目标执行,断点应该很快命中
如果断点成功命中,可以尝试k命令观察函数调用过程,如果你成功看到了类似下面这样的调用过程,那么恭喜你,你成为这个世界上为数很少的成功把i915驱动中断下来的高手之一!
Child-SP RetAddr Call Site
ffffb75b4221fa48 ffffffff
c074250e i915!gen8emitflushrender
ffffb75b4221faa8 ffffffff
c0743283 i915!i915gemdoexecbuffer+0x71e
ffffb75b4221fc98 00000000
000003f0 i915!i915gemexecbuffer2_ioctl+0x1f3
Asked: 2020-07-11 10:33:01 +0800
Seen: 50 times
Last updated: Jul 15 '20