ubuntu kdb 使用

来源:互联网 发布:Coldplay主唱知乎 编辑:程序博客网 时间:2024/06/06 08:54

ubuntu kdb 使用

在vmware7 虚拟机上通过

一. 下载源码包,注意与内核对应:网址:
http://oss.sgi.com/projects/kdb/
*.bz2 用 bzip2 -d或者用bunzip2 解压
二. 为内核打补丁
patch -p1 < ../kdb-common...
patch -p1 < ../kd-x86...
三. 配置内核
Kernel hacking中
select Built-in Kernel Debugger support and select the KDB modules.
确认下面选项或直接在.config 中添加
CONFIG_KDB=y
CONFIG_KDB_MODULES=n
CONFIG_KDB_OFF=n
CONFIG_KALLSYMS=y
CONFIG_FRAME_POINTER=y
“KDB off by default”选项, 默认kdb 是关闭的。
四. 重新编译安装内核。
     make
    make install
    make modules_install
五.激活kdb
若kdb 是关闭的("kdb off by default" 选中)
#echo "1" >/proc/sys/kernel/kdb   //激活kdb
#echo "0" >/proc/sys/kernel/kdb   //关闭kdb
若kdb 是活动的,按pause/break 可呼出kdb.
OK,我按下pause键, cap lock,scroll lock 开始狂闪了,然后再按什么键鼠标都没反应了,死机了,按电源重启吧, ohoh
原因:在kdb运行时内核停止任何东西. 在你调用 kdb 的系统中不应当运行其他东西, 要想不死机,你需要进入单用户模式。
sudo init 1
选择:
root Drop to root shell prompt.
再按pause 键, 期待已久的提示画面出现了。
出现提示符kdb,同时键盘上Caps和Scroll两指示灯不停闪烁,提示现在处于kdb调试环境中。
在kdb中, 输入go+ 执行退出kdb 到用户模式,此时oop,及断点都可以触发kdb.
在紧急情况下或遇到断点,kdb 会跳出
六. kdb 常用命令
kdb提供丰富的命令实现运行控制、内存操纵、寄存器操纵、断点设置、堆栈跟踪等许多功能,总共有33条命令,下面分别进行介绍。
1.运行控制 (三个命令)
go(继续程序执行): 运行直到碰到断点或退出kdb(此时灯不闪),
ss(单步执行程序): 执行一条指令
ssb(单步执行直到遇到分支或调用语句)
2.断点类
bp:设置或者显示断点
bl: 设置或者显示断点, 同bp
bpa: 设置或者显示全局断点
bph:硬件断点
bpha 全部断点
bc:清除
be:打开
bd:关闭
3 内存操作类命令包括对内存进行显示和修改的
md、
mdr、
mds、
mm
4条命令。.
4. 堆栈跟踪类
bt (显示堆栈)
btp(指定进程)
bta(所有)
5.寄存器类
rd:显示寄存器内容
rm:修改寄存器的内容

其它,忽略!


kdb 似乎是一个走下坡路的功能, 在ubuntu 默认安装中(我试了一台pc, 一台手提), 没有了kdb 选项(vmware 虚拟机中有)
而在虚拟机中,由于只能用单用户模式, 使得屏幕大小显示受到限制, 字体太小,屏幕小,不能调整,只好放弃。