下位机程序跑飞问题解决

8 篇文章 11 订阅
5 篇文章 0 订阅

通过Jlink仿真器找出程序跑飞位置

1、通过仿真器连接电脑,并点击J-LINK Commandcr按钮(在JLINK安装后的SEGGER目录下)
2、再打开的窗口中输入usb,则J-LINK就能访问目标板;
3、接下来输入?,就可以查看J-LINK所支持的控制命令列表,如下

在这里插入图片描述
输入h命令:对应他是让内核停止工作,当遇到跑飞是,通过该命令,就可以看到当前PC指针位置,从而知道程序在哪里运行失效,如下
在这里插入图片描述
锁定位置后通过PC指针通过以下2个查找当前跑飞位置

方法1:通过.axf文件精确定位程序跑飞位置

在附件中打开压缩包,进入路径:cmbacktrace-master\tools\addr2line找到自己系统的对应软件,将软件拖到程序输出.axf文件的位置,然后启动PowerShell窗口,输入以下指令后回车:
.\addr2line.exe -e .\xxx.axf 0x0815E0A4
注意:0x0815E0A4是PC指针地址
在这里插入图片描述
就会打印出程序在什么位置跑飞。

方法2:通过 .map文件定位程序跑飞大致位置

打开编译输出的.map文件,搜索PC指针指向地址的前四位字符串找到需要执行的指令附近,然后再往下找到处前一个地址小于PC指针,后一个地址大于PC指针,就可以确定程序中在哪个函数中跑飞的啦,如下图(下图还是以PC指针为"0x0815E0A4"为例):
在这里插入图片描述
附件:addr2line软件下载链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值