2012/10/23 Harald Servat <[email protected]>: > Hello, > > I'm using libunwind 1.1 in a Linux with ARM processor. I've found that > unw_step seems not to work, or at least not as in x86-64 because it does > not report all the backtrace but only the top of the stack level. I'm > attaching a simple program (derived from the tests Gtest-bt.c) that > shows this and also the output in a ARM and in a X86/64 machine. > > Do I need to compile something in a special way? I've looked at the > objdump -D output from the ARM version and the subroutines seem to be > there.
Greetings, Here are some debugging hints: - Try compiling your program with "-g", so that the binary will also carry the dwarf debugging information that is used for backtracing. - Try compiling your program with "-funwind-tables", to get ARM unwind tables that can be alternatively used for backtracing. - There's also a third backtracing alternative on ARM, the frame chain following. You'll need to compile with ARM & APCS modes for it to work. - To see what's happening inside libunwind, configure it with "--enable-debug", then "export UNW_DEBUG_LEVEL=99" before running your program. - On ARM, you can runtime select which unwind method(s) to use via environment variable UNW_ARM_UNWIND_METHOD, valid choices from include/tdep-arm/libunwind_i.h (by default, libunwind tries them all): #define UNW_ARM_METHOD_ALL 0xFF #define UNW_ARM_METHOD_DWARF 0x01 #define UNW_ARM_METHOD_FRAME 0x02 #define UNW_ARM_METHOD_EXIDX 0x04 Regards, Tommi Rantala > In ARM: > # gcc -O0 mytest-bt.c -I ../include > -L /gpfs/CEPBATOOLS/libunwind/1.1/lib -lunwind -lunwind-arm -o mytest-bt > # LD_LIBRARY_PATH=/gpfs/CEPBATOOLS/libunwind/1.1/lib: > $LD_LIBRARY_PATH ./mytest-bt > bar (123) > foo (123) > explicit backtrace: > 0000000000008734 unw_get_proc_name: <do_backtrace+0x3c> > (sp=00000000becce318) > proc=0x8658-0x8b6b > handler=0x0 lsda=0x0 gp=0x0 > > In X86/64: > # gcc -O0 mytest-bt.c -I aplic/libunwind/1.1/include -L > aplic/libunwind/1.1/lib -lunwind -lunwind-x86_64 -o mytest-bt > # LD_LIBRARY_PATH=aplic/libunwind/1.1/lib:$LD_LIBRARY_PATH ./mytest-bt > bar (123) > foo (123) > explicit backtrace: > 000000000040092a unw_get_proc_name: <do_backtrace+0x26> > (sp=00007ffff8c9b150) > proc=0x400904-0x400b06 > handler=0x0 lsda=0x0 gp=0x6011e0 > 0000000000400b30 unw_get_proc_name: <foo+0x2a> (sp=00007ffff8c9b1c0) > proc=0x400b06-0x400b32 > handler=0x0 lsda=0x0 gp=0x6011e0 > 0000000000400b63 unw_get_proc_name: <bar+0x31> (sp=00007ffff8c9b1e0) > proc=0x400b32-0x400b65 > handler=0x0 lsda=0x0 gp=0x6011e0 > 0000000000400b7e unw_get_proc_name: <main+0x19> (sp=00007ffff8c9b200) > proc=0x400b65-0x400b85 > handler=0x0 lsda=0x0 gp=0x6011e0 > 0000003c4342169d unw_get_proc_name: <__libc_start_main+0xed> > (sp=00007ffff8c9b220) > proc=0x3c434215b0-0x3c43421768 > handler=0x0 lsda=0x0 gp=0x3c437b0fe8 > 0000000000400849 unw_get_proc_name: <_start+0x29> (sp=00007ffff8c9b2e0) > proc=0x400849-0x40084a > handler=0x0 lsda=0x0 gp=0x0 > > Regards > > > WARNING / LEGAL TEXT: This message is intended only for the use of the > individual or entity to which it is addressed and may contain > information which is privileged, confidential, proprietary, or exempt > from disclosure under applicable law. If you are not the intended > recipient or the person responsible for delivering the message to the > intended recipient, you are strictly prohibited from disclosing, > distributing, copying, or in any way using this message. If you have > received this communication in error, please notify the sender and > destroy and delete any copies you may have received. > > http://www.bsc.es/disclaimer > _______________________________________________ > Libunwind-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/libunwind-devel > _______________________________________________ Libunwind-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/libunwind-devel
