嵌入式环境下使用kdb

环境

Freescale i.MX6 CPU

内核版本4.1.15

1、配置内核

        首先配置menuconfig,在编译内核时启动kdb功能,kernel hacking选项下

Kernel hacking --->
  [*] KGDB: kernel debugger --->

        最终配置结果如下

CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_KGDB_KDB=y
CONFIG_KDB_DEFAULT_ENABLE=0x1
CONFIG_KDB_KEYBOARD=y
CONFIG_CONTINUE_CATASTROPHIC=1

2、编译内核

3、在shell下进入kdb

        进入shell后,找到当前正在使用的串口tty

        echo "tty0, 115200" > /sys/module/kgdboc/parameters/kgdboc,在内核未编译kdb功能时,

/sys/module下没有 kgdboc目录。

        echo g > /proc/sysrq-trigger (进入kdb)

4、常用命令

md:用于查看内存的值。例如,kdb> md 0xc000000 15 可以显示从地址0xc000000开始的15行内存的内容。
mm:用于修改内存的值。例如,kdb> mm 0xc000000 0x10 可以将地址0xc000000上的内容更改为0x10。
rd:显示CPU寄存器的内容。
rm:修改寄存器的内容。这个命令以寄存器名称和新的内容作为参数,用于修改寄存器的内容。
bp:设置断点。当程序执行到设定的地址时,系统会停止执行并将控制权交给kdb。
bl:列出当前的断点集,包括启用和禁用的断点。
be:启用断点,该命令的参数是断点号。
bc:从断点表中去除断点,可以指定断点号或“”作为参数,后者意味着去除所有断点。
ss:单步(指令)调试。
go:继续执行或退出kdb。
id:反汇编。
cpu:切换CPU。
dmesg:显示dmesg信息。

注:在上述场景下,在命中断点后使用bt命令显示的调用栈并不正确,还没有仔细查找原因,如果有那位知道可以留言指导一下!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值