strace — утилита для диагностики и отладки программ для ОС, использующих ядро Linux. Она позволяет отслеживать и (начиная с версии 4.15) вмешиваться в процесс взаимодействия программы и ядра, включая происходящие системные вызовы, возникающие сигналы и изменения состояния процесса. Для своей работы strace использует механизм ptrace. Начиная с версии 4.13, формирование выпусков программы синхронизировано с выходом новых версий Linux.
Основные изменения:
- 64-битные системные вызовы (например, readv), вызываемые в x32 ABI, теперь снабжаются суффиксом «
#64
» вместо ранее используемого префикса «64:
». В отличие от старого, новый формат имени может быть использован при спецификации системных вызовов в аргументах командной строки. - Изменён формат вывода номера ошибки: теперь errno всегда печатается как «
-1 ECONST (Error description)
» для известных номеров ошибок и как «-1 (errno 123)
» для неизвестных, вне зависимости от квалификатора-e raw
. Для печати номеров известных номеров ошибок можно использовать опцию-X raw
. - Недоступные адреса внутри массивов теперь печатаются как комментарии (
[value1, value2, ... /* 0xbadc0ded */]
вместо[value1, value2, 0xbadc0ded]
). - Добавлена поддержка использования libdw для печати стеков вызовов (опция
-k
). - Добавлена опция
-X
для управления форматом вывода именованных констант (Debian bug #692915). - Добавлена возможность указания ABI при задании системного вызова (например,
-e raw=open@x32,inotify_init@64,statx@32
). - Добавлена поддержка инжектирования системных вызовов без побочных эффектов вместо инжектирования некорректного системного вызова (
-e inject=SET:syscall=
; это может быть полезно в случае наличия фильтров seccomp, которые убивают приложения при вызове системных вызовов, не входящих в белый список). - Улучшена поддержка воспроизводимой сборки (Debian bug #896016).
- Добавлена поддержка декодирования команд
BPF_PROG_QUERY
иBPF_RAW_TRACEPOINT_OPEN
системного вызова bpf. - Добавлена поддержка декодирования команд ioctl
INOTIFY_IOC_SETNEXTWD
иPERF_EVENT_IOC_*
. - Добавлена поддержка декодирования опций
PR_GET_SPECULATION_CTRL
иPR_SET_SPECULATION_CTRL
системного вызова prctl. - Улучшено декодирование системных вызовов bpf, getsockopt, setsockopt и socket.
- Улучшено декодирование протоколов netlink
NETLINK_KOBJECT_UEVENT
иNETLINK_ROUTE
. - Улучшено декодирование команд ioctl
BTRFS_*
,FS_IOC_*
,SIOCGIFHWADDR
иSIOCSIFHWADDR
. - Улучшено декодирование адресов сокетов
AF_BLUETOOTH
. - Реализовано декодирование системного вызова io_pgetevents.
>>> Сайт проекта
>>> Скачать
>>> Репозиторий (GitHub)
>>> Подробности