网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > linux > 系统管理 > 内核技术 > 使用kgdb调试linux内核及内核模块  

使用kgdb调试linux内核及内核模块

2006-10-08  作者:网管整理  来源:bitsCN.com  点评 投稿 收藏

  1. 几种内核调试工具比较 网管u家u.bitsCN.com

  kdb:只能在汇编代码级进行调试;
  优点是不需要两台机器进行调试。

网管u家u.bitscn@com

  gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数。 网管u家u.bitscn@com

  kgdb:能很方便的在源码级对内核进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试) 网管联盟bitsCN_com

  使用kdb和gdb调试内核的方法相对比较简单,这里只描述如何使用kgdb来调试内核。 中国网管论坛bbs.bitsCN.com

  2.软硬件准备

网管联盟bitsCN@com

  环境:

网管网www_bitscn_com

  eloper(192.168.16.5 com1),一台测试机target(192.168.16.30 com2),都预装redhat 9;一根串口线 网管u家u.bitsCN.com

下载以下软件包:
linux内核2.4.23         linux-2.4.23.tar.bz2
kgdb内核补丁1.9版       linux-2.4.23-kgdb-1.9.patch
可调试内核模块的gdb     gdbmod-1.9.bz2

网管联盟bitsCN@com

  3.ok,开始 网管u家u.bitsCN.com

  3.1 测试串口线 中国网管联盟bitsCN.com

  物理连接好串口线后,使用一下命令进行测试,stty可以对串口参数进行设置 网管u家u.bitscn@com

在developer上执行:
stty ispeed 115200 ospeed 115200 -F /dev/ttyS0
echo hello > /dev/ttyS0
在target上执行:
stty ispeed 115200 ospeed 115200 -F /dev/ttyS1
cat /dev/ttyS1

网管u家u.bitscn@com

  串口线没问题的话在target的屏幕上显示hello 中国网管论坛bbs.bitsCN.com

  3.2 安装与配置 中国网管论坛bbs.bitsCN.com

  3.2.1 安装 中国网管论坛bbs.bitsCN.com

  下载linux-2.4.23.tar.bz2,linux-2.4.23-kgdb-1.9.patch,gdbmod-1.9.bz2到developer的/home/liangjian目录 网管bitscn_com

  *在developer机器上 中国网管联盟bitsCN.com

#cd /home/liangjian
#bunzip2 linux-2.4.23.tar.bz2
#tar -xvf linux-2.4.23.tar
#bunzip2 gdbmod-1.9.bz2
#cp gdbmod-1.9 /usr/local/bin
#cd linux-2.4.23
#patch -p1 < ../linux-2.4.23-kgdb-1.9.patch
#make menuconfig

网管下载dl.bitscn.com

  在Kernel hacking配置项中将以下三项编译进内核 网管下载dl.bitscn.com

KGDB: Remote (serial) kernel debugging with gdb
KGDB: Thread analysis
KGDB: Console messages through gdb

网管下载dl.bitscn.com

  注意在编译内核的时候需要加上-g选项

网管bitscn_com

#make dep;make bzImage

网管bitscn_com

  使用scp进行将相关文件拷贝到target上(当然也可以使用其它的网络工具) 网管联盟bitsCN@com

#scp arch/i386/boot/bzImage root@192.168.16.30:/boot/vmlinuz-2.4.23-kgdb
#scp System.map root@192.168.16.30:/boot/System.map-2.4.23-kgdb
#scp arch/i386/kernel/gdbstart  root@192.168.16.30:/sbin
gdbstart为kgdb提供的一个工具,用于激活内核钩子,使内核处于调试状态 网管u家u.bitscn@com


TAGs   模块   调试   使用   内核   gdb   target   at   函数   developer   可以      
 上一篇:基于S3C2410处理器目标板的Linux移植   下一篇:Linux系统应用程序和内核模块的区别
使用kgdb调试linux内核及内核模块 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: