LINUX内核开发与调试--KDB
LINUX内核开发与调试
-- KDB
张银奎
2017/3/ 18
KDB
the in-kernel debugger for the Linux kernel
内建在LINUX内核中的内核调试器
整个调试器实现在内核中
命令接收、处理符号、执行、输出结果,全部功能
比Windows的调试引擎的范围要大
调试引擎只是调试器的前端
而且支持单机内核调试
2.6.35
KDB merged to mainline
Early debug with EHCI debug port or keyboard + vga console
Silicon
Graphics
Internatio
nal Corp.
构建选项
CONFIG_DEBUG_KERNEL=y
包含调试信息
CONFIG_FRAME_POINTER=y
包含栈帧指针,易于观察局部变量和栈回溯
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
通过串口调试
CONFIG_KGDB_KDB=y
CONFIG_KDB_KEYBOARD=y
单机调试
Kernel/debug/Makefile
obj-$(CONFIG_KGDB) += debug_core.o gdbstub.o
obj-$(CONFIG_KGDB_KDB) += kdb/
两种使用模式
单机 双机
•键盘输入 •串口连接
•控制台输出 •串口工具即可
•putty
/pub/linux/kernel/people/jwessel/kdb/usingK
DB.html
启用
kgdboc=[kms][[,]kbd][[,]serial_device][,baud]
使用串口
kgdboc=ttyS0,115200
使用键盘
kgdboc=kbd
使用键盘和串口
kgdboc=kbd,ttyS0,115200
格物
启动学习用虚拟机时,按下Shift
键,选择Linux … Kernel
Debug
在主机上启动putty,打开串口
\\.\pipe\ucom1
回车让虚拟机开始引导
感受bt命令
KDB基因- shell-style界面
命令模仿shell
ps, lsmod, dmesg, …
可以使用tab键补齐功能来查找符号
命令输入
文本输出
控制台
Not designed for
Source level debugging
Debugging user programs
单机内核
简介 进入KDB 常用命令 内部实现
调试
三类方法
代码 异常 键盘