KDB内核调试手册.pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

小青欣文案铺 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档