arm call stack

本文详细介绍了ARM架构下的调用堆栈,包括寄存器fp和lr的作用,以及如何进行栈回溯,主要针对Linux用户空间的C程序。
摘要由CSDN通过智能技术生成

Arm Call Stack  

2011-05-12 19:44:23|  分类: 默认分类 |  标签:fp  arm  lr  寄存器  回溯   |字号 订阅

转载时请注明出处和作者联系方式: http://blog.csdn.net/mimepp
ARM系统中, 当crash发生时的back trace调试输出
作者:余涛(yut616_at_sohu.com)
关键字:一般保护错 back trace

在ARM target board上, 如果发生异常,如内存访问越界等情况,有时会非常难debug到底是哪里出错,近来看了一下back trace回溯的功能及实现,在这里做个笔记。
 
首先,back trace要涉及到一堆寄存器, 不过不用担心, 实际上没你想象的那么难。
 
在linux kernel的代码中可以看到关于ARM寄存器的定义,在这里列一下:
linux / include / asm - arm / proc - armv / ptrace.h
struct  pt_regs 
       
long uregs[18]; 
}

   
#define  ARM_cpsr            uregs[16]  // 当前程序状态寄存器 
#define  ARM_pc              uregs[15]  // 程序计数器 指令计数器,下一条将要执行的指令
#define  ARM_lr              uregs[14]  // 链接link寄存器,是退出时要装载到pc中的值,返回回来时就是到这个里面去执行之前的代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值