在arm中进行栈回溯经验归纳
发布时间
阅读量:
阅读量
摘要
在ARM架构下发生段错误时,未能回溯至具体函数,持续查找该问题的根源。而在x86等模式下,相同代码却能够实现回溯功能。针对ARM 32位设备进行测试时,出现了此类现象。
分析
经过多次尝试与探索,最终发现了一些关键性的信息
基础知识概述
此处将阐述栈布局形成的基本原理,相关话题在网络上已有大量讨论,读者可自行查阅资料获取更多信息,此处暂不展开讲解。
重点在于说明两者的差异,x86架构支持回溯操作,而arm架构则不具备此功能,其根本原因在于两种架构对栈结构的组织方式存在差异。在x86模式中,入栈操作遵循严格的顺序规范,寄存器中的数据能够被精确地定位与追踪。
然而,在arm架构中,由于对性能的优化考虑,默认配置下部分与栈相关的寄存器可能并不存在。
具体信息呈现
以下代码作为示例进行展示
static char *p = NULL;
void d()
{
printf("this is d\n");
}
typedef struct Test
{
char s[1024];
int a;
} Test;
void c()
{
d();
// *p = 8;
Tes
全部评论 (0)
还没有任何评论哟~
