linux内核加启动调试参数,调试Linux内核操作指南(withing kgdb)

kgdb在内核2.6.26中加入,用于调试内核。kdb是内建的内核调试器,由SGI开发。

两者差异是:

使用kgdb需要两个机器,通过网络连接,其中客户端使用gdb。而kdb可以直接在目标机器上调试。

Kgdb支持C代码级别调试,可以识别内核数据结构,而kdb只能识别汇编级别。

这里两台机器(使用的是两台VBox的虚拟机),一个是目标机器(被调试内核的机器),另一台是开发机器(连接被调试内核的机器)。

要使用kgdb,需要重新编译下内核,先修改相关配置:

[*] Compile the kernel with debug info

[*] KGDB: kernel debugger  --->

[*]   KGDB_KDB: include kdb frontend for kgdb

CONFIG_DEBUG_INFO选项使得编译中生产调试信息。

CONFIG_STRICT_KERNEL_RWX选项会阻止内核的某些断点,所以禁止(4.15.15中并未看到此项)。并增加KDB。最后查看.config配置文件包含如下:

CONFIG_FRAME_POINTER=y

CONFIG_KGDB=y

CONFIG_KGDB_SERIAL_CONSOLE=y

CONFIG_KGDB_KDB=y

CONFIG_DEBUG_INFO=y

然后进行编译安装,make –j2 && make modules_install && make install

1.   内核参数

在内核启动参数中添加,表示启动,通过串口ttyS0来实现kgdb调试。

kgdbwait kgdboc=ttyS0,115200

kgdbwait可以让kgdb在内核启动阶段等待一个调试器链接进来,系统此刻是挂住的。

注:kgdboc表示kgdb over concole,是配置gdb和kgdb通信的首选机制。

也可以运行过程中使能或禁止命令,如下:

echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc

echo "" > /sys/module/kgdboc/parameters/kgdboc

使能kgdb后要禁止内核执行,执行如下,触发一个中断:

echo g > /proc/sysrq-trigger

目标机器挂住后,就是开发机器链接到目标机器上去了。下面来看下整个过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值