Утилита 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