Если вы разрешите системе выгружать файлы ядра, вы можете проанализировать их с помощью gdb:
$ ulimit -c unlimited # bash sentence to allow for infinite sized cores
$ ./stack_overflow
Segmentation fault (core dumped)
$ gdb -c core stack_overflow
gdb> bt
#0 0x0000000000400570 in f ()
#1 0x0000000000400570 in f ()
#2 0x0000000000400570 in f ()
...
Иногда я видел плохо сгенерированный файл ядра, в котором была неправильная трассировка стека, но в большинстве случаев bt выдаст кучу рекурсивных вызовов одного и того же метода.
Файл ядра может иметь другое имя, которое может включать идентификатор процесса, это зависит от конфигурации ядра по умолчанию в вашей текущей системе, но может управляться с помощью (запуск от имени root или с помощью sudo):
$ sysctl kernel.core_uses_pid=1