Когда сервис падает, а логов недостаточно, следующий шаг — 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
