我按照这篇文章打印堆栈跟踪当我的 gcc C++ 应用程序崩溃时如何生成堆栈跟踪。它在 x86 linux 上运行良好。谁能教我如何让它在arm-linux上运行?
我使用的是arm-linux-gcc 4.4.3。
[root@FriendlyARM /]# ./test1
Error: signal 11:
[0x0]
in 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编译的方式
arm-linux-g++ -g -rdynamic ./testCatchSeg.cpp -o testCatchSeg
当分支到子例程时,ARM 不会将返回地址存储在堆栈上,而是希望任何调用子例程的函数都保存链接寄存器在调用其他函数之前先到其自己的堆栈帧,因此在没有调试信息的情况下不可能跟踪堆栈帧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)