Доступен (https://sourceforge.net/p/strace/mailman/message/35858015/) выпуск strace 4.17 (https://strace.github.com/), утилиты для диагностики и отладки программ для ОС, использующих ядро Linux. Она позволяет отслеживать и (начиная с версии 4.15 (https://www.opennet.me/opennews/art.shtml?num=45689)) вмешиваться в процесс взаимодействия программы и ядра, включая происходящие системные вызовы, возникающие сигналы и изменения состояния процесса. Для своей работы strace использует механизм ptrace (http://man7.org/linux/man-pages/man2/ptrace.2.html). Начиная с версии 4.13 формирование выпусков strace синхронизировано с выходом новых версий ядра Linux.
Основные изменения (https://raw.githubusercontent.com/strace/strace/master/NEWS) в strace 4.17:
- Оптимизирована фильтрация системных вызовов за счёт уменьшения количества вызовов ptrace() для системных вызовов, отображение которых отключено.
- Добавлена поддержка декодирования системного вызова statx(2) (http://man7.org/linux/man-pages/man2/statx.2.html), появившегося (https://lwn.net/Articles/707602/) в Linux 4.11.
- Добавлена поддержка декодирования команд ioctl(2) (http://man7.org/linux/man-pages/man2/ioctl.2.html), связанных с операциями над пространствами имён (http://man7.org/linux/man-pages/man2/ioctl_ns.2.html).
- Для ioctl подсистемы Video4Linux добавлена поддержка декодирования не декодировавшихся ранее типов V4L2_BUF_TYPE_*, а также команд VIDIOC_S_TUNER и VIDIOC_G_TUNER.
- Реализована поддержка декодирования сообщений NLMSG_ERROR протокола netlink (http://man7.org/linux/man-pages/man7/netlink.7.html).
- Улучшено декодирование системного вызова sched_setattr(2) (http://man7.org/linux/man-pages/man2/sched_setattr.2.html), команды BPF_PROG_ATTACH системного вызова bpf(2) (http://man7.org/linux/man-pages/man2/bpf.2.html), некорректных аргументов команд подсистемы device mapper (https://www.kernel.org/doc/Documentation/device-mapper/) системного вызова ioctl(2) (http://man7.org/linux/man-pages/man2/ioctl.2.html).
- Классы системных вызовов, указываемые в аргументе -e trace= (такие как process, file, network, ipc, desc, memory), теперь должны начинаться со знака %: -e trace=%memory. Старый синтаксис без указания знака процента (-e trace=memory) всё так же поддерживается, но теперь считается устаревшим.
- Добавлены новые классы системных вызовов для указания их фильтрации: %stat (варианты системного вызова stat(2) (http://man7.org/linux/man-pages/man2/stat.2.html) на разных архитектурах), %lstat (варианты системного вызова lstat(2) (http://man7.org/linux/man-pages/man2/lstat.2.html)), %fstat (варианты системных вызовов fstat(2) (http://man7.org/linux/man-pages/man2/fstat.2.html) и fstatat(2) (http://man7.org/linux/man-pages/man2/fstatat.2.html)), %%stat (все вызовы, возвращающие статусную информацию о файле, включая statx(2) (http://man7.org/linux/man-pages/man2/statx.2.html)), %statfs (варианты системного вызова statfs(2) (http://man7.org/linux/man-pages/man2/statfs.2.html)), %fstatfs (варианты системного вызова fstatfs(2) (http://man7.org/linux/man-pages/man2/fstatfs.2.html)), %%statfs (все вызовы, возвращающие статусную информацию о файловой системе, включая ustat(2) (http://man7.org/linux/man-pages/man2/ustat.2.html)).
- Добавлена возможность указания регулярного выражения для задания множества фильтруемых системных вызовов, например, -e trace=/sched_.*.
- Добавлена возможность игнорирования ошибки, возникающей в случае, если множество системных вызовов, соответствующее указанному фильтру, пустое, например -e trace=?statx на архитектурах, которые не поддерживают системный вызов statx(2) (http://man7.org/linux/man-pages/man2/statx.2.html).
- Добавлена поддержка декодирования маски сигналов в системном вызове rt_sigreturn(2) (http://man7.org/linux/man-pages/man2/rt_sigreturn.2.html) для архитектур alpha, arc, arm, avr32, bfin, cris, hppa, m68k, metag, microblaze, mips, nios2, or1k, powerpc, powerpc64, riscv, sh, sh64, sparc, sparc64, tile, x86 и xtensa.
- Исправлено декодирование аргумента флагов в системных вызовах preadv2(2) (http://man7.org/linux/man-pages/man2/preadv2.2.html) и pwritev2(2) (http://man7.org/linux/man-pages/man2/pwritev2.2.html) на ABI x32.
- Исправлено декодирование старого варианта системного вызова sigsuspend(2) (http://man7.org/linux/man-pages/man2/sigsuspend.2.html) на архитектурах alpha, cris, mips, powerpc, powerpc64, sh, sh64, sparc и sparc64.
- Исправлено декодирование системных вызовов sgetmask(2) (http://man7.org/linux/man-pages/man2/sgetmask.2.html) и ssetmask(2) (http://man7.org/linux/man-pages/man2/ssetmask.2.html) на 64-битных архитектурах.
- Обойдена ошибка компилятора GCC (https://sourceforge.net/p/strace/mailman/message/35721703/), приводящая к генерации некорректного кода на ядрах для архитектуры aarch64, вследствие которой третий аргумент системного вызова sched_getattr(2) (http://man7.org/linux/man-pages/man2/sched_getattr.2.html) не вполне 32-битный.
Также, среди изменений, вошедших в предыдущий релиз 4.16, можно отметить следующие:
- В механизм подмены системного вызова добавлена поддержка указания возвращаемого значения (-e inject=SET:retval=) и возбуждения сигнала (-e inject=SET:signal=)
- Добавлена поддержка декодирования системного вызова ustat(2) (http://man7.org/linux/man-pages/man2/ustat.2.html).
- Реализована поддержка декодирования команд BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH и BPF_PROG_DETACH системного вызова bpf(2) (http://man7.org/linux/man-pages/man2/bpf.2.html).
- Существенно доработана поддержка декодирования команд SCSI системного вызова ioctl(2) (http://man7.org/linux/man-pages/man2/ioctl.2.html): добавлена поддержка декодирования всех не доекодировавшихся ранее команд SG_*, а также структур sg_io_hdr и sg_io_v4.
- Улучшено декодирование системных вызовов get_robust_list(2) (http://man7.org/linux/man-pages/man2/get_robust_list.2.html), getrandom(2) (http://man7.org/linux/man-pages/man2/getrandom.2.html), io_submit(2) (http://man7.org/linux/man-pages/man2/io_submit.2.html), set_robust_list(2) (http://man7.org/linux/man-pages/man2/set_robust_list.2.html).
- Исправлено декодирование структур ifconf, ifreq, and loop_info для ABI, отличающихся от ABI ядра.
- Исправлено декодирование системных вызовов kexec_file_load(2) (http://man7.org/linux/man-pages/man2/kexec_file_load.2.html), mprotect(2) (http://man7.org/linux/man-pages/man2/mprotect.2.html), pkey_mprotect(2) (http://man7.org/linux/man-pages/man2/pkey_mprotect.2.html), prctl(2) (http://man7.org/linux/man-pages/man2/prctl.2.html), preadv(2) (http://man7.org/linux/man-pages/man2/preadv.2.html)/preadv2(2) (http://man7.org/linux/man-pages/man2/preadv2.2.html), pwritev(2) (http://man7.org/linux/man-pages/man2/pwritev.2.html)/pwritev2(2) (http://man7.org/linux/man-pages/man2/pwritev2.2.html) на ABI x32.URL: https://sourceforge.net/p/strace/mailman/message/35858015/
Новость: http://www.opennet.me/opennews/art.shtml?num=46599
Возможно, стоит добавить, что strace в существенной мере разрабатывается в... альте. :) (ldv@, lineprinter@, glebfm@, вроде кто-то ещё руку прикладывал)
Если так, то личное спасибо тем кто поддерживает strace. Это нужная штука.
Миша, завидую твоему упорству - зная, что сейчас сотня-другая идиотов прибежит обсирать альт, ты все равно постишь про него)
Никто другой не приложил столько усилий по дискредитации Альта.
Вот аж застыл в ожидании примеров. Будут или сольешься?
> Миша, завидую твоему упорству - зная, что сейчас сотня-другая идиотов прибежит
> обсирать альт, ты все равно постишь про него)Тут как: клинические такими и останутся, их "критику" слушать без пользы вообще; а наслушавшиеся баек или целенаправленного вранья, глядишь, и задумаются. Людям же разумным может быть попросту интересно -- в т.ч. узнать, что по strace можно организовать семинар здесь же в Москве (там _очень_ много реализовано за последние годы помимо базовых -f и -o, которых многим вроде как хватает) или же обсудить вопросы за чашкой чая.
Мне вот на прошедшей на этой неделе конференции OS Day было весьма интересно узнать про ГосЛинукс и "Циркон" не только то, что это очередные клоны центоси, а и то, _для чего_ их, собственно, делали и что весьма интересного сделано в оригинальной части (заодно же -- что тот же "Циркон" в десятой версии решал сходные задачи на базе Solaris 10). Это не говоря про ещё две оригинальные операционки "с нуля" -- "конторскую" QP ОС имени Криптософт и "домашнюю" LDuS одного дядьки с мехмата МГУ, ну и разработчики Embox опять приехали.
PS: strace регулярно участвует в GSoC, ментором там вроде как опять же Дима Левин -- и что-то мне подсказывает, что он бы с радостью поработал с толковыми студентами, а не только индусами и китайцами, из которых многие набегают чисто на денюх заработать (хотя бывают, разумеется, и интересные задумки/патчи).
Существенной на сколько ? Как и в ядре 1 патч из миллиарда?
Да хоть и так - это всё равно в миллиард раз больше пользы чем принёс ты. :-)
> не вполне 32-битныйшикарная формулировка.
Ну все Начинаю Любить Альт, Мне все равно какой дистрибутив используют разработчики ПО, это личное дело каждого. Детский сад какой то. Разработчикам strace спасибо за труд, очень нужное ПО.
Забыл добавить, специально для Шигорина, чем чаще реклама тем больше отвращение к продукту который рекламируют. Хотите рекламу делайте ее грамотно, пишите статьи например, в чем альт лучше. А вот такого рода реклама мол starce разрабатывают используя Альт, это как спам
> Забыл добавить, специально для Шигорина, чем чаще рекламаНе собираюсь специально добавлять специально для Вас, что реклама -- это платная услуга по избирательному информированию, а я написал то, что и самому бывает интересно узнать о других проектах, для тех, кому тоже такое интересно.
Статьи "чем лучше", как по мне, глупость. Полезней статьи про _неочевидные_ тонкие места, могущие вылезти боком -- как вот про необходимость настройки авторотации томов в Bacula _заранее_, а не когда уже слишком поздно.
В разработке strace принимают участие люди с Альта. ТЧК. Медецинский факт.
Если сий вопиющий факт не даёт тебе спокойно жить на этой жестокой планете - сделай вд^W - перелети жить на Шелезяку :-) Ну или хотя бы купи [К]aнaльный охладитель :))))