Для Linux представлен универсальный инструмент для трассировки программ
17 ноября 2010 года
В ответ на сожаление Линуса Торвальдса об отсутствии для Linux удобной и понятной обычным пользователям утилиты для задействования современных возможностей Linux-ядра по трассировке программ, Томас Глейкснер (Thomas Gleixner) представил на суд разработчиков утилиту "trace". В отличие от усложненных профессиональных инструментов, подобных утилите "perf", "trace" отличается простотой использования и пригодностью для решения повседневных задач. Утилита пока не оформлена в отдельный репозиторий и требует загрузки Git-репозитория с деревом ядра.
По заявлению разработчика, несмотря на то, что возможности ядра по трассировке программ за последние годы существенно возросли, так и не удалось создать инструмент, сравнимый по своему удобству с такими ветеранами, как strace, за исключением появления таких мощных специализированных инструментов, как PowerTop и LatencyTop. Утилита trace направлена на то, чтобы переломить сложившуюся ситуацию и совместить легкость использования и мощь инфраструктуры профилирования "perf".
Процесс работы с trace сводится к однократной трассировке приложения, сохранению результатов в файл и последующему анализу результатов: от генерации общих сводных отчетов до все более и более глубокого погружения в детали, с возможностью задания фильтров для выделения интересующих событий (системные вызовы, связанные с работой процесса события (fork/clone/exit), mmap-события, работа планировщика задач и т.п.). Особенностью утилиты является поддержка одновременной трассировки одной и той же программы разными пользователями.
Из планов на будущее отмечается поддержка возможностей трассировки, привязанных к отслеживанию сетевой и дисковой активности приложения, поддержка команды 'trace diff' для наглядного сравнения нескольких трассировок, реализация возможности инициирования трассировки на лету по PID-идентификатору уже запущенного процесса.
Наиболее типичные стадии работы с trace:
- "trace record имя_программы" - создание файла trace.data с результатами трассировки программ и всех порожденных потомков;
- "trace summary" - вывод краткого суммарного обзора результатов трассировки;
- "trace report" - формирования детального отчета;
- "trace report process|io|fs" - детализация отчета в категории "управление процессом", ввод/вывод или файловые операций;
- "trace report -d 0.5" - вывод информации о событиях, выполнение которых заняло более 0.5 миллисекунд;
- "trace check" - проверка, какие из возможностей ядра по трассировке программ доступны в данный момент.
Из существенных отличий от утилиты strace называется: низкое влияние на трассируемую программу; отображение аргументов системных вызовов в шестнадцатеричном представлении, за исключением таких важных аргументов, как имена файлов (trace не выполняет полное декодирование); отслеживание обращения к недопустимым страницам памяти (pagefault); возможность повторного анализа с новыми фильтрами и опциями.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.