strace — утилита для диагностики и отладки программ для ОС, использующих ядро Linux. Она позволяет отслеживать и (начиная с версии 4.15) вмешиваться в процесс взаимодействия программы и ядра, включая происходящие системные вызовы, возникающие сигналы и изменения состояния процесса. Для своей работы strace использует механизм ptrace. Начиная с версии 4.13 формирование выпусков программы синхронизировано с выходом новых версий Linux.
Основные изменения:
- Сделан ряд улучшений в поддержке декодирования протокола netlink (см. также). Работы в этом направлении проводятся в рамках проекта Google Summer of Code 2017 «Netlink socket parsers», являющегося продолжением одноимённого проекта 2016 года.
- Добавлена поддержка декодирования сообщений SCM_TIMESTAMP*.
- Обновлены списки значений констант
ARPHRD_*
,KEYCTL_*
,NDIAG_SHOW_*
,RTM_*
,SCM_*
,SCTP_*
,SO_*
,V4L2_*
и используемых в системном вызове prctl()ARCH_*
.
Исправления ошибок:
- В интерактивном режиме (
-I2
) заблокированные сигналы теперь остаются таковыми на всём протяжении работы утилиты. - Больше не происходит сброс обработчика сигнала
SIGCHLD
на обработчик по умолчанию в трассируемых процессах. - Теперь если трассируемый процесс завершится по заблокированному сигналу, strace его разблокирует, чтобы завершитья по нему же.
- Исправлена сборка на архитектуре MIPS с заголовочными файлами старых версий ядра, на архитектурах AArch64 и Tile с glibc ≥ 2.26, а также архитектурах ARC и Nios II после изменений, связанных с добавлением поддержки декодирования системного вызова rt_sigreturn() в strace 4.17.
Помимо проекта JingPiao Chen по поддержке декодирования протокола netlink, в рамках Google Summer of Code 2017 также выполняются следующие работы:
- поддержка pcap-like синтаксиса для задания фильтров системных вызовов (Николай Марчук);
- поддержка встраивания Lua в механизмы фильтрации и подмены системных вызовов (Виктор Крапивенский);
- разработка утилиты, позволяющей получать справочную информацию о системных вызовах (Эдгар Казиахмедов).
>>> Сайт проекта (sourceforge)
>>> Репозиторий (sourceforge)