編譯 elf 時不要 strip
STRIP := /usr/bin/true
產生 coredump
ulimit -c 設定 user 的 core上限, 記憶體足夠的情況下, 直接設定成無限.
$ulimit -c unlimited
發生 Segmentation fault
讓程式發生 Segmentation fault, 如果有產生 core 檔, 會在 stdout 看到 Segmentation fault (core dumped).
core 文件會放在 /tmp/process_name.xxxxxx.core
預設存放路徑
UBUNTU 22.04: /var/lib/apport/coredump
用 gdb 載入 core
$ gdb <elf> <core>
跑到錯誤點
如果一個 page 跑不到, 直接按 c 跑到錯誤點.
--Type <RET> for more, q to quit, c to continue without paging--
用 Back Trace (bt) 查看 call stack
如果 elf 經過 strip 減肥, 會看不到 symbol.