print stack trace in arm-linux(在arm-linux中打印堆栈跟踪)
问题描述
我按照这篇文章打印堆栈跟踪 当我的 gcc C++ 应用程序崩溃时如何生成堆栈跟踪.它在 x86 linux 中运行良好.谁能教我如何让它在 arm-linux 上工作?
I followed this post to print stack trace How to generate a stacktrace when my gcc C++ app crashes . It works well in x86 linux. Can anyone teach me how to make it work on arm-linux?
我正在使用 arm-linux-gcc 4.4.3.
I am using arm-linux-gcc 4.4.3.
[root@FriendlyARM /]# ./test1
Error: signal 11:
[0x0]
在 x86 中
mickey@mickeyvm:~/Desktop/workspace/test/testCatchSeg/src$ ./test1
Error: signal 11:
./test1(_Z7handleri+0x19)[0x804876d]
[0xedd400]
./test1(_Z3bazv+0x10)[0x80487c2]
./test1(_Z3barv+0xb)[0x80487e1]
./test1(_Z3foov+0xb)[0x80487ee]
./test1(main+0x22)[0x8048812]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x84de37]
./test1[0x80486c1]
这就是我为 arm-linux 编译的方式
This is how I compile for arm-linux
arm-linux-g++ -g -rdynamic ./testCatchSeg.cpp -o testCatchSeg
推荐答案
ARM在跳转到子程序时不会将返回地址存储在堆栈上,而是希望任何调用子程序的函数都保存链接寄存器 在调用其他函数之前到自己的栈帧,所以没有调试信息是不可能跟随栈帧的.
ARM does not store the return address on the stack when branching to a subroutine but rather expects any function calling subroutines to save the link register to its own stack frame before calling other functions, so it is impossible to follow stack frames without debug information.
这篇关于在arm-linux中打印堆栈跟踪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在arm-linux中打印堆栈跟踪


基础教程推荐
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01