Утилита strace

strace – утилита, позволяющая отслеживать системные вызовы, используемые программой, и получаемые ей сигналы.

Запуск:

strace program

или

strace -p pid

для отладки уже запущенной программы (нужны права суперпользователя).

Можно отлаживать многопроцессные программы, передав ключ -f. В этом случае будут печататься системные вызовы и сигналы не только родителя, но и детей, порождённых после присоединения к процессу. Можно указать файл, в который strace будет писать вывод:

strace -o log.txt program

Для системных вызовов strace печатает имя вызова, переданные ему аргументы и значение, которое он вернул. Можно ограничить количество отслеживаемых системных вызовов:

strace -e trace=open,close,read,write,fork,exec program

То же для сигналов:

strace -e signal=!SIGTERM program

Можно отслеживать данные, читаемые или записываемые в файловые дескрипторы:

strace -e read=0,3 program
strace -e write=1,2,4 program

Кроме того, можно вмешиваться в работу процесса, например, подменяя результаты системных вызовов. Об этом и многом другом можно прочитать в документации strace:

man 1 strace