Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

print stack trace in 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?

I am using 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]

This is how I compile for arm-linux

 arm-linux-g++ -g -rdynamic ./testCatchSeg.cpp -o testCatchSeg
like image 453
Mickey Avatar asked Sep 05 '25 15:09

Mickey


1 Answers

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.

like image 85
Simon Richter Avatar answered Sep 08 '25 10:09

Simon Richter