LINUX.ORG.RU

strace 4.22

 ,


1

1

strace — утилита для диагностики и отладки программ для ОС, использующих ядро Linux. Она позволяет отслеживать и (начиная с версии 4.15) вмешиваться в процесс взаимодействия программы и ядра, включая происходящие системные вызовы, возникающие сигналы и изменения состояния процесса. Для своей работы strace использует механизм ptrace. Начиная с версии 4.13, формирование выпусков программы синхронизировано с выходом новых версий Linux.

Основные изменения:

  • Список рассылки переехал на strace-devel@lists.strace.io, репозиторий на SourceForge больше не поддерживается.
  • Печать ввода-вывода для системных вызовов, выполняющих запись (-e write=) теперь производится в том числе и для вызовов, завершившихся неудачей (Debian bug #436284).
  • Опции -r (вывод промежутка времени, прошедшего с предыдущего системного вызова) и -t (вывод wall clock для системного вызова) больше не являются взаимоисключающими; ранее указание опции -r приводило к игнорированию опции -t (Debian bug #466195).
  • Реализован механизм инжектирования задержек на входе и выходе из системного вызова (-e inject=SET:delay_enter=, -e inject=SET:delay_exit=).
  • Добавлена опция -A для открытия выходных файлов в режиме добавления (append mode) (Debian bug #528488).
  • Улучшено декодирование системных вызовов bpf, kern_features, prctl и ptrace.
  • Улучшено декодирование команд ioctl BTRFS_IOC_INO_PATHS, BTRFS_IOC_LOGICAL_INO, и PTP_*.
  • Улучшено декодирование netlink-протоколов NETLINK_ROUTE и NETLINK_NETFILTER.
  • Реализовано декодирование номера блочного/символьного устройства при вызове с опцией -yy.
  • Добавлена печать известных имён для форматов пиксела и SDR в командах ioctl Video4Linux.
  • Добавлена поддержка вывода локализованных описаний ошибок.
  • Исправлена сборка на m68k.
  • Исправлено декодирование fourcc на архитектурах с порядком байт от старшего байта к младшему.

>>> Полный список изменений

>>> Сайт проекта

>>> Репозиторий (GitHub)

>>> Подробности

★★

Проверено: jollheef ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Помню кто-то втирал про более лучшие альтернативы этому, напомните.

anonymous
()
Ответ на: комментарий от anonymous

Альтернативы в каком плане? perf/ftrace/dtrace имеют значительно меньший оверхед, но они асинхронны и не декодируют всё то, что может декодировать strace.

eSyr ★★
() автор топика

Однозначно Нужно! Пусть и не всем.

anc ★★★★★
()

Уже обновился.

> ldd /usr/bin/strace
        linux-vdso.so.1 (0x00007ffe346fb000)
        librt.so.1 => /lib/librt.so.1 (0x00007fb887b3f000)
        libc.so.6 => /lib/libc.so.6 (0x00007fb887785000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fb887567000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fb887d47000)
> du -h /usr/bin/strace
3,8M    /usr/bin/strace
> strace -V
strace -- version 4.22
Copyright (c) 1991-2018 The strace developers <https://strace.io>.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Optional features enabled: m32-mpers mx32-mpers
>

saahriktu ★★★★★
()
Ответ на: комментарий от anonymous

strip'ают для тех, кто ни при каких обстоятельствах не занимается отладкой. И не каждый бинарник. Чтобы удалить что-то «лишнее», нужно сначала добавить это «лишнее». strip удаляет именно отладочную информацию. И это если ещё говорить про щадящий режим удаления «лишнего». Если пройтись strip'ом по всей системе, то она превратится в тыкву.

saahriktu ★★★★★
()
Ответ на: комментарий от eSyr

Ну, библиотеку libunwind я пока ещё не собирал. libiberty у меня, похоже, тоже отсутствует в системе, хотя libiberty.h нашёлся.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Отладочную информацию можно хранить отдельно, если она так нужна. И я очень сомневаюсь, что много людей будет отлаживать такую мелкую утилиту, которая сама нужна только для отладки.

anonymous
()
Ответ на: комментарий от saahriktu

Если пройтись strip'ом по всей системе, то она превратится в тыкву

То-то в генте нужны исключения на то чтобы НЕ strip-ать бинарники(по умолчанию они как раз strip-аются). Сразу видно - нерабочая система, ага :-)

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Кстати да, в дистрибутивах идут стрипнутые бинари.

anonymous
()
Ответ на: комментарий от Pinkbyte

по умолчанию они как раз strip-аются

Видимо, либо исключения таки есть, либо там свои опции для strip'а. После того, как я прошёл по системе strip'ом с опцией --strip-unneeded, она больше не загрузилась. Пришлось разворачивать из бэкапа.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Всё что собрал стрипаю --strip-all, проблем не встречал.

anonymous
()
Ответ на: комментарий от saahriktu

glibc точно не стрипается:

RESTRICT="strip" # Strip ourself #46186

Собственно https://bugs.gentoo.org/46186

И то - у людей система загружается, только отладить ничерта нельзя :-)

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.