Обзор
strace запускает указанную команду или подключается к уже работающему процессу, выводя в реальном времени все системные вызовы и события сигналов этого процесса. Это необходимо для понимания низкоуровневой работы программы, такой как файловый ввод-вывод, сетевое взаимодействие и управление памятью.
Основные функции
- Отслеживание системных вызовов и сигналов процесса
- Отображение аргументов, возвращаемых значений и кодов ошибок для каждого вызова
- Подключение к работающему процессу для отслеживания
- Отслеживание дочерних процессов
- Фильтрация определенных системных вызовов или сигналов
Основные опции
strace позволяет тонко настраивать способ отслеживания и формат вывода с помощью различных опций.
Основные опции отслеживания
Управление выводом
Фильтрация
Сгенерированная команда:
Комбинируйте команды.
Описание:
`strace` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Различные примеры использования strace.
Простое отслеживание команды
strace ls
Отслеживает системные вызовы команды `ls`.
Сохранение результатов отслеживания в файл
strace -o date_trace.log date
Сохраняет системные вызовы команды `date` в файл `date_trace.log`.
Отслеживание работающего процесса
strace -p 12345
Подключается к процессу с PID 12345 и отслеживает его системные вызовы. (PID должен быть заменен на реальный идентификатор процесса.)
Отслеживание дочерних процессов
strace -f bash -c "echo Hello, strace!"
При выполнении команды `echo` в оболочке `bash` отслеживает системные вызовы как `bash`, так и `echo`.
Фильтрация только определенных системных вызовов
strace -e trace=open,read,write cat /etc/hosts
Отслеживает, использует ли команда `cat /etc/hosts` системные вызовы `open`, `read`, `write`.
Проверка времени выполнения системных вызовов
strace -T ls
Выводит время, затраченное на каждый системный вызов.
Установка
strace может быть не установлен по умолчанию в большинстве дистрибутивов Linux. Вы можете установить его с помощью следующих команд.
Debian/Ubuntu
sudo apt update && sudo apt install strace
Установка с использованием пакетного менеджера APT.
CentOS/RHEL 7
sudo yum install strace
Установка с использованием пакетного менеджера YUM.
Fedora/RHEL 8+
sudo dnf install strace
Установка с использованием пакетного менеджера DNF.
Советы и предостережения
strace — мощный инструмент, но при его использовании следует учитывать несколько моментов.
Влияние на производительность
strace перехватывает системные вызовы процесса, поэтому может существенно влиять на производительность отслеживаемой программы. Это особенно заметно для программ с интенсивным вводом-выводом. Следует использовать с осторожностью в производственных средах.
Интерпретация вывода
Вывод strace может быть очень объемным, поэтому рекомендуется фильтровать необходимую информацию (-e) или сохранять ее в файл (-o) для анализа. Подробную информацию о конкретных системных вызовах можно найти с помощью команды `man 2 <syscall_name>`.
Права доступа
Для отслеживания процессов других пользователей или системных действий требуются права `root`.
Отличие от отладчиков
strace работает на уровне системных вызовов и, в отличие от отладчиков вроде `gdb`, не позволяет напрямую манипулировать переменными или вызовами функций внутри программы, а также просматривать стек вызовов. Оба инструмента могут использоваться взаимодополняюще.