GDB调试zephyr

本文介绍了如何利用J-Link调试工具和GDB调试器对Cortex-M微控制器进行程序调试。步骤包括通过J-Link连接设备、在CMD中启动GDB、加载ELF文件、设置断点以及使用GDB的各种指令,如load、break、c、bt等进行程序的下载、运行、暂停和查看堆栈信息。此外,还提到了条件断点、查看变量值和堆栈帧等高级调试技巧。
摘要由CSDN通过智能技术生成

调试工具:j-link

点击ok之后,看到j-link栏目有connected字样就是连接成功

在arm-none-eabi-gdb.exe 文件夹下面启动cmd

替换成你的的elf文件(也可以直接输入arm-none-eabi-gdb.exe 之后,将elf文件拖拽到命令行处)

arm-none-eabi-gdb.exe  zephyr.elf   

如下是我的demo

回车出现如下画面:

连接目标端口(一般用默认的即可)

target remote localhost:2331

输入load往MCU中加载调试文件,也就是常见的烧录过程

load    

在main函数中打断点 

break main

输入 c就是继续执行的意思

常用gdb指令:

monitor reset  //复位

load  //下载文件

c  //继续运行

delete   //删除断点

break cenon_app.c:277 if devContext.lcmState==0   //条件断点

info breakpoints   //查看断点信息

bt  //打印当前堆栈信息

info args
打印出当前函数的参数名及其值。

info locals
打印出当前函数中所有局部变量及其值。

awatch devContext.lcmState==0   //

rwatch 命令:只要程序中出现读取目标变量(表达式)的值的操作,程序就会停止运行;
awatch 命令:只要程序中出现读取目标变量(表达式)的值或者改变值的操作,程序就会停止运行。

 i frame   //查看堆栈信息
 
 p &devContext.lcmState   //打印地址信息
 
 disable breakpoints_num  //失能断点号
 enable breakpoints_num  //使能断点号

有问题重新下载代码(步骤为 monitor reset   然后load  最后 c)

b main.c:main  运行到main.c并且打断点

info variables

p 全局变量名     //查看全局变量

break main.c:145     在main.c的145行打断点

info break   查看断点信息(包括断点号)

info break num  //查看num号断点的信息

delete num //删除num号断点

delete   //删除所有断点

list    //列举源码

step  //单步运行

finish   //完成该函数的调试

参考博客:

https://cedar-renjun.github.io/2015/10/04/Use-gdb-debug-cortex-m-mcu-via-jlink-gdb-server/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值