Для Linux представлен универсальный инструмент для трассировки программ
По заявлению разработчика, несмотря на то, что возможности ядра по трассировке программ за последние годы существенно возросли, так и не удалось создать инструмент, сравнимый по своему удобству с такими ветеранами, как 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); возможность повторного анализа с новыми фильтрами и опциями.
Источник: http://www.opennet.ru/opennews/art.shtml?num=28688
|
0 | Tweet | Нравится |
|