Когда сервис падает, а логов недостаточно, следующий шаг — gdb. Не обязательно быть C-разработчиком: базовых команд хватает, чтобы вытащить стек вызовов и переменные на момент краха.

gdb -p $(pgrep myapp)       # подключиться к живому процессу
gdb --args ./myapp --config prod.conf

(gdb) bt              # backtrace — стек вызовов
(gdb) info locals     # переменные текущего фрейма
(gdb) frame 2         # переключиться на фрейм
(gdb) print my_var
(gdb) continue

Для уже случившегося краха без живого процесса — gdb ./myapp core.12345: bt покажет строку и стек на момент сигнала. Без -g при сборке символов нет, bt покажет только адреса — но иногда и этого хватает понять, в какой библиотеке крах.

#linux #debugging #sysadmin