Linuxlab

strace в Linux: трассировка системных вызовов

Обновлено 3 июля 2026 г.

strace показывает каждый системный вызов программы к ядру: какие файлы она открывает, что читает и где сбоит.

Синтаксис

strace команда   # или: strace -p PID

Частые случаи

strace ls                  # все системные вызовы команды ls
strace -p 1234             # подключиться к работающему процессу
strace -e trace=openat ls  # только вызовы открытия файлов
strace -f ./app            # вместе с дочерними процессами
strace -c ls               # сводка: какие вызовы и сколько времени

Как это устроено: граница между программой и ядром

Программа сама почти ничего не делает напрямую: открыть файл, послать пакет, выделить память - всё это просьбы к ядру, системные вызовы. strace встаёт на эту границу и печатает каждый вызов с аргументами и результатом. Поэтому он бесценен, когда программа «молча не работает»: видно, какой файл она не нашла (ENOENT) или к какому сокету не смогла подключиться. Цена - сильное замедление, так что на проде применяют точечно. strace требует привилегию PTRACE, которой в нашей песочнице нет.

В книге

Подробно эта тема разобрана в главе Системная диагностика и методология.

См. также

Открытые файлы: lsof, Файловая система /proc, Просмотр процессов.