gdb
                Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| gdb [2023/04/12 20:44] – external edit 127.0.0.1 | gdb [2024/10/22 19:07] (current) – [Attaching to a remote target] dblume | ||
|---|---|---|---|
| Line 94: | Line 94: | ||
| (gdb) c | (gdb) c | ||
| + | ===== Processing a backtrace from code ===== | ||
| + | |||
| + | When using a define like this... | ||
| + | |||
| + | <code cpp> | ||
| + | #define PRINT_BACKTRACE { void *stack[32];  | ||
| + |     const int nptrs = :: | ||
| + |     if (nptrs) :: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | You might get output like this: | ||
| + | |||
| + |     / | ||
| + | Application[0x4c51d0] | ||
| + |      | ||
| + | You can get source code lines if you can calculate the offsets from each module. You can get those module base addresses from / | ||
| + | |||
| + |     target:$ egrep " r-xp .*/ | ||
| + |     00010000-00dfb000 r-xp 00000000 00:0d 135649148  | ||
| + |     b3578000-b3f45000 r-xp 00000000 00:0d 68148928  | ||
| + | |||
| + | So, for example, the first frame is at: libUILib.so + (0xb3831a78 - 0xb3578000). You can use addr2line to get that: | ||
| + | |||
| + |     $ addr2line -e path/ | ||
| + |     path/ | ||
gdb.txt · Last modified: 2024/10/22 19:07 by dblume