当前位置: 首页 > wzjs >正文

巴顿品牌设计公司广西百度seo

巴顿品牌设计公司,广西百度seo,鑫路网站建设,用java怎么做门户网站一、栈回溯 1.1 栈回溯的原理 调试程序时,经常发生这类错误: 1.读写某个地址,导致程序崩溃 2.调用某个空函数,导致程序崩溃在异常处理函数中,可以打印出”发生错误瞬间”的所有寄存器。 我们调试时,可以…

一、栈回溯

1.1 栈回溯的原理

调试程序时,经常发生这类错误:

1.读写某个地址,导致程序崩溃
2.调用某个空函数,导致程序崩溃

在异常处理函数中,可以打印出”发生错误瞬间”的所有寄存器。

我们调试时,可以根据这些寄存器,知道发生错误的位置。

但是,光知道发生错误的位置还不够! 比如,根据打印信息知道在C函数里发生错误,但是你无法确定是在哪个调用链上出错:

1.A > B > C时出错?
2.D > C时出错?

image.png

C语言函数的返回地址,保存在栈里:

image.png

栈内容示例:

image.png

1.2 修改异常处理函数打印栈内容

发生错误时,异常函数如何处理?

image.png

发生错误时,栈的使用情况:

image.png

修改HardFault_Handler:

IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler
HardFault_Handler    PROC; get current contextTST     lr, #0x04               ; if(!EXC_RETURN[2])ITE     EQMRSEQ   r0, msp                 ; [2]=0 ==> Z=1, get fault context from handler.MRSNE   r0, psp                 ; [2]=1 ==> Z=0, get fault context from thread.STMFD   r0!, {r4 - r11}         ; push r4 - r11 registerSTMFD   r0!, {lr}               ; push exec_return registerTST     lr, #0x04               ; if(!EXC_RETURN[2])ITE     EQMSREQ   msp, r0                 ; [2]=0 ==> Z=1, update stack pointer to MSP.MSRNE   psp, r0                 ; [2]=1 ==> Z=0, update stack pointer to PSP.PUSH    {lr}BL      rt_hw_hard_fault_exceptionPOP     {lr}ORR     lr, lr, #0x04BX      lrENDP

打印寄存器和栈:

image.png

image.png

1.3 分析栈找出函数调用关系

要分析栈,需要得到程序的反汇编码:

image.png

fromelf  --text  -a -c  --output=all.dis    F103_Moduel\F103_Moduel.axf

根据PC值在反汇编文件中找到发生错误的位置:

image.png

发现函数C太简单,它根本没有使用栈,函数C执行完,直接返回到LR。

在打印的信息中,LR=0x08000383,去掉bit0,就是:0x08000382

根据这个值,在反汇编文件中找到函数C的调用者,是函数B:

image.png

在函数B的入口处,发现使用了8字节的栈,并且保存了LR:

image.png

分析函数B的栈:确定返回地址LR=0x08000355,bit0清零后就是0x08000354:

image.png

image.png

在反汇编中搜0x08000354 ,确定函数B的返回地址是函数A:

image.png

在函数A的入口处,发现使用了8字节的栈,并且保存了LR:

image.png

分析函数A的栈:确定返回地址LR=0x08001d99,bit0清零后就是0x08001d98。

这是TestDebug函数。

image.png

最终,调用链为:

image.png

二、修改bin文件实现断点

点击深入解析栈回溯技术:如何通过异常处理精准定位程序崩溃点查看全文

http://www.dtcms.com/wzjs/201413.html

相关文章:

  • 如何做网站可以吗公司企业网站建设方案
  • 河南省建设厅一体化平台关闭站长工具seo综合查询
  • 做暧昧的小视频网站2竞价 推广
  • 免费个人网站注册有广告位怎么找广告商
  • wordpress 站内信插件快速排名提升
  • 装备可以卖人民币的手游网站的优化
  • 北京做百度网站建设有哪些网络营销公司
  • 定制型网站建设服务器网络推广工作好吗
  • 企业网站建设代理日本搜索引擎
  • 泉州网站建设哪里优惠济南网站建设老威
  • 做网站需注重的几点电子商务网站有哪些?
  • 自己做淘宝客是不是需要建网站淮北网站建设
  • 做网站的联系方式优化百度搜索
  • 杨凌区住房和城乡建设局网站日本网站源码
  • 阳谷网站建设费用seo广告平台
  • 有域名和主机怎么做网站seo服务外包费用
  • 网站做下CDN防护关键词优化seo费用
  • 做外贸独立网站 但是产品不行品牌营销策略四种类型
  • 番禺电子商务网站建设b2b外贸平台
  • 企查查企业信息查询网丽水网站seo
  • 合肥 网站建设网站推广名词解释
  • wordpress 4.2.20百度seo排名培训
  • 莲都区建设分局网站长尾词排名优化软件
  • 深圳网站建设咨询公司苏州网站建设制作公司
  • 玉林做网站优化推广河南网站建设哪个公司做得好
  • 揭阳城乡建设局网站怎么做竞价托管
  • 光明新区做网站app推广工作靠谱吗
  • 企业微信功能详细介绍杭州专业seo服务公司
  • 个人网页设计作品展示电脑优化工具
  • 网站关键词基础排名怎么做百度权重划分等级