科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道揭秘Linux内核调试器之内幕 (3)

揭秘Linux内核调试器之内幕 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在引导期间还可以将另一个标志传递给内核。kdb=early 标志将导致在引导过程的初始阶段就把控制权传递给 KDB。如果您需要在引导过程初始阶段进行调试,那么这将有所帮助。

作者:Hariprasad Nellitheertha 来源:IBM 2007年11月6日

关键字: 内幕 调试器 内核 Linux

  • 评论
  • 分享微博
  • 分享邮件
在引导期间还可以将另一个标志传递给内核。kdb=early 标志将导致在引导过程的初始阶段就把控制权传递给 KDB。如果您需要在引导过程初始阶段进行调试,那么这将有所帮助。

调用 KDB 的方式有很多。如果 KDB 处于打开状态,那么只要内核中有紧急情况就自动调用它。按下键盘上的 PAUSE 键将手工调用 KDB。调用 KDB 的另一种方式是通过串行控制台。

当然,要做到这一点,需要设置串行控制台(请参阅参考资料以获取这方面的帮助)并且需要一个从串行控制台进行读取的程序。按键序列 Ctrl-A 将从串行控制台调用 KDB。

KDB 命令

KDB 是一个功能非常强大的工具,它允许进行几个操作,比如内存和寄存器修改、应用断点和堆栈跟踪。根据这些,可以将 KDB 命令分成几个类别。下面是有关每一类中最常用命令的详细信息。

内存显示和修改

这一类别中最常用的命令是 md、mdr、mm 和 mmW。

md 命令以一个地址/符号和行计数为参数,显示从该地址开始的 line-count 行的内存。如果没有指定 line-count,那么就使用环境变量所指定的缺省值。如果没有指定地址,那么 md 就从上一次打印的地址继续。地址打印在开头,字符转换打印在结尾。

mdr 命令带有地址/符号以及字节计数,显示从指定的地址开始的 byte-count 字节数的初始内存内容。它本质上和 md 一样,但是它不显示起始地址并且不在结尾显示字符转换。mdr 命令较少使用。

mm 命令修改内存内容。它以地址/符号和新内容作为参数,用 new-contents 替换地址处的内容。

mmW 命令更改从地址开始的 W 个字节。请注意,mm 更改一个机器字。

示例

显示从 0xc000000 开始的 15 行内存:
[0]kdb> md 0xc000000 15

将内存位置为 0xc000000 上的内容更改为 0x10:

[0]kdb> mm 0xc000000 0x10
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章