SystemTap — средство, которое позволяет собирать и анализировать информацию о работающей Linux-системе, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев. В разработке проекта SystemTap участвуют такие компании как Red Hat, IBM, Oracle Corporation, Hitachi.
Неполный список изменений:
- Изменения во фронтэнде (утилите stap):
- Поддержка работы на системах с UEFI SecureBoot с поддержанием ключей верификации силами размещённого в сети доверительного SystemTap-сервера;
- Возможность выполнения контрольных проверок во время загрузки, благодаря подстановке проверочных модулей на раннем этапе загрузки (поддерживаются системы с dracut). Для выполнения проверок во время загрузки представлена команда onboot
- При выполнении DWARF-проверок обеспечена возможность использования '.callee|s|' для более точного исследования функций. Например, если конструкция process(«myproc»).function(«foo»).callee(«bar») сработает только при вызове функции bar() из foo(), то process(«myproc»).function(«foo»).callees сработает для всех вызовов;
- Новые опции для инспектирования содержимого установленных библиотек: «stap --dump-functions» выведет весь список функций и их аргументы, «stap --dump-probe-aliases» покажет все псевдонимы контрольных проверок для библиотеки;
- Увеличена скорость и точность выполнения контрольных проверок выражений (process.statement) для развёрнутых (inline) функций;
- Улучшены эвристические алгоритмы, используемые для поиска завершения пролога функции;
- В случае недоступности debuginfo проверка функций в процессах теперь откатывается на использование символьных таблиц;
- Увеличена точность и лаконичность сообщений об ошибках несоответствия типов;
- При отсутствии указанных меток обеспечен вывод подсказок с уточнением наиболее вероятного варианта, например, при указании process(«stap»).mark(«benchmart») предлагается использовать метку 'benchmark';
- Улучшения в языке сценариев:
- Поддержка условного выражения «%( guru_mode == 0 %)» или «%( guru_mode == 1 %)» для организации двойного использования скриптов;
- Во встроенных функциях на Си можно использовать STAP_RETURN(value) вместо перехода «goto out» и назначения STAP_RETVALUE;
- Функции |s|println() теперь могут быть вызваны без аргументов, что приведёт к выводу символа новой строки;
- Добавлена поддержка обратной трассировки (backtracing) через задействование специального модуля;
- Добавлен новый псевдоним проверки «oneshot» для быстрого выполнения фрагмента скрипта и выхода.
>>> Подробности