2023/02/08

用 gdb 找 Segmentation fault 的位置

編譯 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

用 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.