strace
Показывает каждый системный вызов программы с аргументами и возвращаемыми значениями. Отвечает на вопрос «какой конфиг он вообще читает?» за десять секунд вместо часа чтения исходников.
Работает поверх ptrace — того же интерфейса ядра, что используют отладчики. Полезные варианты: strace -f следует за дочерними процессами, -p PID подключается к уже запущенной программе, -e trace=openat,stat отсеивает шум, -c суммирует время по вызовам, -o файл сохраняет вывод. Классические применения: найти отсутствующий файл за ошибкой «no such file», увидеть, к какому сокету подключается программа, или понять, где она зависла. Накладные расходы значительны — каждый вызов останавливает процесс, — так что для продакшена это не инструмент. Аналоги: ltrace для библиотечных вызовов, dtruss в macOS.