Strace, утилита Cli для перехвата и записи системных вызовов

strace-статистика

Strace - это утилита CLI, которая используется для проверки ошибок в системе. как позволяет отслеживать системные вызовы используется определенной программой и всеми получаемыми ею сигналами. Полезность позволяет пользователю контролировать и (начиная с версии 4.15) вмешиваться в процесс взаимодействия программы и ядравключая текущие системные вызовы, всплывающие окна и изменения состояния процесса

Его работа стала возможной благодаря функции ядра Linux под названием ptrace. Это похоже на приложение truss, доступное в других системах Unix. Программа Cygwin предоставляет аналогичную утилиту. Чаще всего его используют для запуска вместе с отслеживаемой программой, которая распечатывает список выполняемых системных вызовов.

Полезно выяснить причину сбоя той или иной программыили потому что он сообщает о ситуациях, в которых, например, программа пытается получить доступ к файлу, который не существует или для которого у нее нет разрешения на чтение.

Среди характеристик, выделяемых Strace, выделяются следующие:

  • Уметь указать фильтр имен системных вызовов, который будет отслеживаться (с помощью параметра -e trace =): по имени, например clone, fork, vfork; используя одну из предопределенных групп, например% ipc или% file; или (начиная с версии 4.17) с использованием синтаксиса регулярных выражений, например clock_ *.
  • Укажите список маршрутов для трассировки (например, -P /etc/ld.so.cache).
  • Укажите список файловых дескрипторов, ввод-вывод которых должен быть сброшен.
  • Подсчитать время выполнения и количество системных вызовов
  • Печать относительных или абсолютных отметок времени
  • Измените код возврата и ошибки указанных системных вызовов и вставьте сигналы после выполнения
  • Извлечение информации о файловых дескрипторах (включая сокеты).
  • Печать трассировки стека, включая (начиная с версии 4.21) символ спроса (-k).
  • Фильтрация по статусу возврата системного вызова
  • strace поддерживает декодирование аргументов некоторых классов команд ioctl, таких как BTRFS_ *, V4L2_ *, DM_ *, NSFS_ *, MEM *, EVIO *, KVM_ * и некоторых других.

Поскольку strace детализирует только системные вызовы, его нельзя использовать для обнаружения такого количества проблем, как отладчик кода, такой как GNU Debugger (gdb). Однако его проще использовать, чем отладчик кода, и это чрезвычайно полезный инструмент для системных администраторов. Он также используется исследователями для генерации трассировки системных вызовов для последующего воспроизведения.

О новой версии Strace 5.3

Недавно была представлена ​​новая версия strace 5.3, в которой код лицензии изменился с BSD на LGPLv2.1 + и GPLv2 + для пробной версии.

Также среди изменений, которые выделяются, есть поддержка фильтрации системных вызовов путем создания фильтров seccomp ("–Seccomp-bpf"), а также код возврата ("-e status = ...").

Еще одно изменение, которое выделяется в анонсе этой новой версии, заключается в том, что разработчики добавили поддержка системных вызовов декодирования pidfd_open и clone3, плюс улучшенное декодирование системных вызовов io_cancel, io_submit, s390_sthyi и syslog.

Также в объявлении подчеркивается, что Синхронизация списков команд ioctl с ядром Linux 5.3

Из других изменений которые упоминаются в объявлении, это:

  • Улучшено декодирование протокола NETLINK_ROUTE.
  • Декодированный атрибут сетевой ссылки UNIX_DIAG_UID и команды WDIOC_ * ioctl
  • Обновлены списки констант AUDIT_ *, BPF_ *, ETH_ *, KEYCTL_ *, KVM_ *, MAP_ *, SO_ *, TCP_ *, V4L2_ *, XDP_ * и * _MAGIC.

Как установить strace 5.3 на Ubuntu и производные?

Утилиту Strace можно найти в репозиториях Ubuntu, а также в ее производных, но пока в эту новую версию он не был включен в репозитории. Установить через репозитории можно, выполнив следующую команду:

sudo apt install strace

Сейчас для тех, кто хочет установить эту новую версию, следует скачать исходный код и скомпилировать в вашей системе.

Они загружают исходный код с помощью:

git https://gitlab.com/strace/strace.git

Они входят с:

cd strace

И они компилируются с помощью:

./configure && make && make install

Наконец, что касается использования, вы можете найти несколько руководств в сети.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.