----
前言
调试内核肯定不是什么轻松的事情, 这里是使用kgdb进行调试, 你理解的没错, 就是kernel版的gdb.
----
虚拟机串口设置
首先克隆下已经重新编译内核的虚拟机
然后设置两者的串口.../vmlinux
target remote /dev/ttyS1
handle SIGSEGV noprint nostop pass
break sys_clone
c
s
?...然后在目标机插入.ko文件
用shell脚本获取.text, .data, .bss段基址.
如果你不太清楚这些东西, 还是请自行google, 因为如果展开, 篇幅就控制不住了.
?.../vmlinux
target remote /dev/ttyS1
handle SIGSEGV noprint nostop pass
常规操作之前也说了, 然后就是新的操作, 要用add-symbol-file...然后把断点打在模块函数DriverWrite中, 开始运行:
?
切回目标机, 已经不是假死了, 运行用户态程序:
?
然后开发机就会触发断点:
?