- # unlimit the size of core dump
- # Set the filename pattern of core dump
- echo "core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern
- %e = executable filename
- %p = pid
- echo "kernel.core_pattern = core.%e.%p" >> /etc/sysctl.conf
- # compile code with debug info
- gcc -g -Wall -o example example.c
- # start debugger
- gdb example core.example.pid
- (gdb)
| bt |
backtrace |
| disas [func] |
disassembly |
| disas/s |
disassembly with source code |
| b func |
breakpoint at function |
| b *func + xxx |
breakpoint |
| i proc m |
memory mappings (info proc mappings) |
| i r |
check registers (info registers) |
| si |
step inside (stepi) |
| list func |
|
| print |
|
| delete xxx |
|
| frame xxx |
|
| quit |
|
| set var name=value |
|
| info break |
|
| info watch |
|
| watch |
|
| rwatch |
|
| c |
continue |
| next |
|
| start |
|
- Reference: http://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html