文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>配置串口使用KDB调试Linux内核(1)

配置串口使用KDB调试Linux内核(1)

时间:2009-07-14  来源:icymoon

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="OneNote.File"><meta name="Generator" content="Microsoft OneNote 11">

我遇到的内核问题中,绝大部分靠printk就可以了,而不确定的死机/死锁问题就有点郁闷了,尤其是死状奇特,每次都不一样的。今天搞通了用串口进行内核调试的环境。内核调试相关工具也不少,kgdb, kdump...而kdb的好处在于可以单机调试,随时break in,问题在于不能使用USB键盘(在我当前使用的这版内核上),守着机器local调试也比较辛苦。本文只记录配置调试环境和使用KDB的方法。


0.内核版本及环境

内核版本:2.6.X

KDB版本:4.4

终端:minicom


1.给内核打KDB的Patch

说明:

(1) KDB的内核patch只支持官方标准内核,如果使用一些发行版修改后的内核,可能需要手动修改一些地方才能编译通过并且运行起来。

(2) KDB的内核patch是与内核版本对应的。


a. 下载内核patch

ftp://oss.sgi.com/www/projects/kdb/download/

下载相应的内核版本的patch


b. 打Patch

gunzip <patch.kdb>.gz

patch -p1 < patch.kdb

 

如果是一些发行版修改过的kernel,有可能需要手动修改一些代码。


c. 编译安装内核

确保kernel hacking中的kdb相关选项被打开,编译,安装,更换内核。

 

2. 配置系统允许串口登录

a. 修改/etc/inittab,增加如下行

S0:23:respawn:/sbin/agetty -L 9600 ttyS0 vt102

 

b. 修改/etc/securetty,增加如下行以确认串口可以使用root登录:

ttyS0

 

c. 修改/boot/grub/menu.lst,增加如下两行与内核启动参数:

#splashimage=(hd0,1)/boot/grub/splash.xpm.gz #如果留下可能会影响串口工作,比如花屏蔽啥的

serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1

#串口参数,unit=0指使用COM1口,speed指波特率,word指传输位宽,parity指奇偶校验,stop指停止位

terminal --timeout=10 console serial

#终端超时时间为10

#hiddenmenu

title Red Hat Enterprise Linux AS (XXX-kdb)

root (hd0,1)

kernel /boot/vmlinuz-XXX-kdb ro root=/dev/sdaX console=tty1 console=ttyS0,9600 #指定console

initrd /boot/initrd-XXX-kdb.img

 

3. 使用串口登录测试机并调用

使用minicom或windows的超级终端连接,不要设错波特率之类的,发送<esc>KDB后即陷入调试状态。后续将记录使用KDB的一些心得。


4. 参考资料

http://oss.sgi.com/projects/kdb/

相关阅读 更多 +
排行榜 更多 +
盒子小镇2游戏手机版下载

盒子小镇2游戏手机版下载

冒险解谜 下载
世界盒子模组版下载最新版本

世界盒子模组版下载最新版本

模拟经营 下载
音乐搜索app最新版本下载

音乐搜索app最新版本下载

趣味娱乐 下载