织梦CMS - 轻松建站从此开始!

罗索

linux kernel 调试方法

落鹤生 发布于 2012-09-05 09:15 点击:次 
我用的是网上说的kgdb + VMware,只能调试加载了kgdb模块之后的代码。为了调试引导过程,我用bochs也安装了一个linux(相当慢)。下面就说下如何使用gdb和VMware调试内核
TAG:

我用的是网上说的kgdb + VMware,只能调试加载了kgdb模块之后的代码。为了调试引导过程,我用bochs也
安装了一个linux(相当慢)。
下面就说下如何使用gdb和VMware调试内核

一,准备
1)开发机:装有Linux的PC
2) 从www.kernel.org下载内核源代码,如2.6.28。
3) 从soft.nankai.edu.cn上下载VMware 的Linux版本和补丁,安装

二,配置VMware
1) 新建一个虚拟机,增加一个串口,让串口指向命名管道/tmp/com_1
2) 虚拟机安装Linux的一个发布版,推荐Fedora,因为我用ubuntu没有成功,^_^。
3) 安装Fedora时不需要安装桌面,但开发库和开发工具要安装,如果你想在虚拟机上编
译内核

三,创建配置文件
1) 复制虚拟机Linux的配置文件到要调试内核的源代码目录
2)修改配置文件,(我用的是make menuconfig)
    1,进入Kernel Hacking
    2, 选中Magic Sysrq Key
    3, 选中Compile the kernel with debug info
    4,选中KGDB: kernel debugging with remote gdb

四,使用修改后的配置文件编译内核,并在虚拟机上安装编译好的内核。简单来说,就是:
1) make
2) make modules_install
3) make install
请参考<Linux Kernel in a Nutshell>

五,配置目标机(虚拟机)
1) 编辑/etc/sysctl.conf, 设置kernel.sysrq=1
2) 修改/boot/grub/grub.conf,为新安装的内核增加引导参数。比如我的是:
    kernel /vmlinuz-2.6.28 ro root=/dev/XXX kgdboc=ttyS0,115200 kgdbwait
    关键是kgdboc后面的。这种设置会使内核在加载kgdb模块后,立即等待远程gdb接入,
    如果想在用户登录以后再调试,就不需要这种设置。

六,如果内核是在虚拟机上编译的,那么将编译后的vmlinuz和System.map下载到开发机
内核代码目录

七,重启虚拟机,进入新安装的内核,如果要求gdb接入,则内核会自动挂起,并输出提
示信息:kgdb: Waiting for connection from remote gdb...

八,配置开发机(本机Linux)。VMware中串口指向的命名管道并不是真实的命名管道,
而是一个Unix-domain的socket,但是gdb不能使用这种socket,所以需要把它重定向到
gdb能够支持的设备:
    $ socat -d -d /tmp/com_1 PTY,输出结果会告诉你定向到了哪个设备,如/dev/pts/2

九,开始调试
1) 进入内核代码目录
2) $gdb ./vmlinuz
3)$(gdb)set remotebaud 115200
4) $(gdb)target remote /dev/pts/2;当然也有可能不是2,根据实际情况而定
5) 如果成功,则会发现虚拟机的断点设在kernel/kgdb.c文件中

十,如果是想在用户登录以后调试,则可以通过以下方法触发kgdb
1)$echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
2) $echo "g" > /proc/sysrq-trigger,再次触发

十一,参考资料
1) http://jaredrobinson.com/blog/?p=204
2) http://www.kernel.org/pub/linux/kernel/people/jwessel/kgdb/index.html
3) http://oslab.info/index.php/Misc/KGDB

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201209/16254.html]
本文出处:shangshuwu.cn 作者:秩名 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容