博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kdb 环境搭建成功
阅读量:4117 次
发布时间:2019-05-25

本文共 2447 字,大约阅读时间需要 8 分钟。

1.内核开关打开

.config中,需要打开如下选项

CONFIG_KGDB 加入KGDB支持

CONFIG_KGDB_SERIAL_CONSOLE 使KGDB通过串口与主机通信(打开这个选项,默认会打开CONFIG_CONSOLE_POLL和CONFIG_MAGIC_SYSRQ)
CONFIG_KGDB_KDB 加入KDB支持
CONFIG_DEBUG_KERNEL 包含驱动调试信息
CONFIG_DEBUG_INFO 使内核包含基本调试信息

2.编译下载到板子上运行

3.使能kdb

在bootargs中增加如下内容 “kgdboc=ttyS0,115200”
我的例子是:
bootargs=kgdboc=ttyS0,115200 console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ath-nor0:256k(u-boot),256k(u-boot-env),6m(rootfs0),1m(uImage0),6m(rootfs1),1m(uImage1),320k(config),1m(reserved),64k(log),64k(manu),64k(ART)

4.激活kdb

进入linux之后,通过echo g >/proc/sysrq-trigger 来开启kdb
我的例子及输出是:

echo g >/proc/sysrq-trigger

[1970-01-01 00:01:55:092000]SysRq : DEBUG

Entering kdb (current=0x839d6dd0, pid 2087) due to Keyboard Entry

kdb> print
Unknown kdb command: ‘print
kdb> bt
Stack traceback for pid 2087
0x839d6dd0 2087 346 1 0 R 0x839d6fe0 *echo
[1970-01-01 00:01:55:096000]Stack : 7fd18998 000004a8 8284be8c 800b51bc 802ba6d8 80159444 82b429a0 8027fe18
[1970-01-01 00:01:55:096000] 0000000d 00003dcd 00000002 fffffffb 00000002 2ab75038 7fffffff 00000100
[1970-01-01 00:01:55:096000] 004b0000 00463668 80159638 00000571 00000000 00000001 00000000 839d6dd0
[1970-01-01 00:01:55:096000] 838ce660 800df90c 00000002 004065b0 8004a74c 004065b0 82bb77c0 fffffff7
[1970-01-01 00:01:55:096000] 800a7f50 800a7f50 004a4410 00000000 8003e700 00000000 00000000 2ab7218c
[1970-01-01 00:01:55:096000] …
[1970-01-01 00:01:55:096000]Call Trace:
[1970-01-01 00:01:55:096000][<8000ffe4>] breakinst+0x0/0x10
[1970-01-01 00:01:55:096000][<80057a88>] kgdb_breakpoint+0x30/0x58
[1970-01-01 00:01:55:096000][<80159444>] __handle_sysrq+0xa4/0x19c
[1970-01-01 00:01:55:096000][<80159638>] write_sysrq_trigger+0x64/0x6c
[1970-01-01 00:01:55:096000][<800df90c>] proc_reg_write+0x48/0x6c
[1970-01-01 00:01:55:096000][<800a7f50>] sys_write+0x58/0xa8
[1970-01-01 00:01:55:096000][<8000f324>] stack_done+0x20/0x3c
[1970-01-01 00:01:55:096000]
kdb>

U-Boot 1.1.4 (Apr 9 2015 - 17:11:33)

注意:进入断点之后,如果不执行go指令,那么系统就会停下来。当看门狗没喂会导致系统重启。

如果启动时没有指定kgdboc=ttyS0,115200,  那echo g >/proc/sysrq-trigger只会打印出帮助信息。

echo a >/proc/sysrq-trigger

[1970-01-01 00:10:00:132000]SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) debug(g) kill-all-tasks(I) thaw-filesystems(J) show-memory-usage(M) nice-all-RT-tasks(N) show-registers(P) show-all-timers(Q) Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)

即打印出sysrq只支持的选项

转载地址:http://aaypi.baihongyu.com/

你可能感兴趣的文章
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>