- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
KDB 内核调试
调试内核问题时,能够跟踪内核执行情况并查看其内存和数据结构是非常有
用的。Linux中的内置内核调试器KDB提供了这种功能。在本文中您将了解如何
使用KDB所提供的功能,以及如何在Linux机器上安装和设置KDB。您还将熟悉
KDB中可以使用的命令以及设置和显示选项。
Linux内核调试器(KDB)允许您调试Linux内核。这个恰如其名的工具实质
上是内核代码的补丁,它允许高手访问内核内存和数据结构。KDB的主要优点之
一就是它不需要用另一台机器进行调试:您可以调试正在运行的内核。
设置一台用于KDB的机器需要花费一些工作,因为需要给内核打补丁并进行
重新编译。KDB的用户应当熟悉Linux内核的编译(在一定程度上还要熟悉内核
内部机理)。
在本文中,我们将从有关下载 KDB 补丁、打补丁、(重新)编译内核以及启
动KDB方面的信息着手。然后我们将了解KDB命令并研究一些较常用的命令。最
后,我们将研究一下有关设置和显示选项方面的一些详细信息。
一、入门
KDB项目是由Silicon Graphics维护的,您需要从它的FTP站点下载与内
核版本有关的补丁。(在编写本文时)可用的最新KDB版本是4.2。您将需要下
载并应用两个补丁。
一个是“公共的”补丁,包含了对通用内核代码的更改,另一个是特定于体
系结构的补丁。补丁可以bz2文件获取。例如,在运行2.4.20内核的x86机器
上,您会需要kdb-v4.2-2.4.20-common-1.bz2和kdb-v4.2-2.4.20-i386-1.bz2。
这里所提供的所有示例都是针对i386体系结构和2.4.20内核的。您将需要
根据您的机器和内核版本进行适当的更改。您还需要拥有root许可权以执行这
些操作。
将文件复制到/usr/src/linux目录中并用bzip2解压缩补丁文件:
#bzip2 -d kdb-v4.2-2.4.20-common-1.bz2
#bzip2 -d kdb-v4.2-2.4.20-i386-1.bz2
您将获得kdb-v4.2-2.4.20-common-1和kdb-v4.2-2.4-i386-1文件。现在,应
用这些补丁:
#patch -p1 kdb-v4.2-2.4.20-common-1
#patch -p1 kdb-v4.2-2.4.20-i386-1
这些补丁应该干净利落地加以应用。查找任何以.rej结尾的文件。这个扩展
名表明这些是失败的补丁。如果内核树没问题,那么补丁的应用就不会有任何问
题。
接下来,需要构建内核以支持KDB。第一步是设置CONFIG_KDB选项。使用您
喜欢的配置机制(xconfig和menuconfig等)来完成这一步。转到结尾处的
“Kernel hacking”部分并选择“Built-in Kernel Debugger support”选项。
您还可以根据自己的偏好选择其它两个选项。选择“Compile the kernel with
frame pointers”选项(如果有的话)则设置CONFIG_FRAME_POINTER标志。这
将产生更好的堆栈回溯,因为帧指针寄存器被用作帧指针而不是通用寄存器。
您还可以选择“KDB off by default”选项。这将设置CONFIG_KDB_OFF标
志,并且在缺省情况下将关闭KDB。我们将在后面一节中对此进行详细介绍。
保存配置,然后退出重新编译内核。建议在构建内核之前执行“make clean”。
用常用方式安装内核并引导它。
初始化并设置环境变量
您可以定义将在KDB初始化期间执行的KDB命令。需要在纯文本文件
kdb_cmds中定义这些命令,该文件位于Linux源代码树(当然是在打了补丁之
后)的KDB目录中。该文件还可以用来定义设置显示和打印选项的环境变量。文
件开头的注释提供了编辑文件方面的帮助。使用这个文件的缺点是,在您更改了
文件之后需要重新构建并重新安装内核。
激活 KDB
如果编译期间没有选中CONFIG_KDB_OFF,那么在缺省情况下KDB是活动的。
否则,您需要显式地激活它---通过在引导期间将kdb=on标志传递给内核或者
通过在挂装了 /proc 之后执行该工作:
#echo 1 >/proc/sys/kernel/kdb
您可能关注的文档
最近下载
- 华侨大学工程经济学考研真题试题2011年.pdf VIP
- 国标建筑专业图集 - 08J933-1 体育场地与设施(一).pdf
- 《ATV212HVAC变频器编程手册SCDOC1564-CN_40821》.pdf
- 西师版三年级上册教材分析.ppt
- 九年级英语人教版全册 unit6_sectiona(3a-3c)阅读课教学设计.pdf
- 初中语文必背古诗文61首.pdf
- 建筑材料行业2024年4月建材家居出口月报:美国通胀回落、就业低于预期,降息预期回升.docx
- 2024第六届(2024年)“信用电力”知识竞赛活动总试题库-下(多选、判断题汇总).docx
- 人教版高中生物必修一全册教学课件.pptx
- 《畜禽粪便与秸秆混合堆肥技术规程》 __DB2306_T098-2019.pdf
文档评论(0)