Это команда perf-probe, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
perf-probe - определение новых динамических точек трассировки
СИНТАКСИС
перфорация зонд [параметры] --add =PROBE [...]
or
перфорация зонд [варианты] ЗОНД
or
перфорация зонд [параметры] --del =[ГРУППА:] СОБЫТИЕ [...]
or
перфорация зонд --list [= [ГРУППА:] СОБЫТИЕ]
or
перфорация зонд [параметры] --line =ЛИНИЯ
or
перфорация зонд [параметры] --vars =ПРОБОПОПИНТ
or
перфорация зонд [параметры] --funcs
ОПИСАНИЕ
Эта команда определяет события динамических точек трассировки по символам и регистрам без debuginfo,
или выражениями C (номера строк C, имена функций C и локальные переменные C) с
отладочная информация.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
-k, --vmlinux = ПУТЬ
Укажите путь vmlinux, в котором есть debuginfo (двоичный файл Dwarf).
-m, --module = ИМЯ МОДА | ПУТЬ
Укажите имя модуля, в котором perf-probe будет искать точки или линии проверки. Если путь
файл модуля передается, perf-probe обрабатывает его как автономный модуль (это означает, что вы можете
добавить зонд на еще не загруженный модуль).
-s, --source = ПУТЬ
Укажите путь к исходному тексту ядра.
-v, --подробный
Будьте более подробными (показывайте проанализированные аргументы и т. Д.). Не может использоваться с -q.
-к, --тишина
Молчи (не показывать никаких сообщений, включая ошибки). Не может использоваться с -v.
-a, --add =
Определите событие датчика (подробности см. В PROBE SYNTAX).
-d, --del =
Удалить события зонда. Это принимает подстановочные знаки glob (*, ?) и классы персонажей (например,
[az], [! AZ]).
-l, --list [= [ГРУППА:] СОБЫТИЕ]
Список текущих событий зонда. Это также может принимать шаблоны фильтрации имен событий.
-L, --line =
Показать строки исходного кода, которые можно исследовать. Для этого нужен аргумент, который указывает
диапазон исходного кода. (подробности см. в LINE SYNTAX)
-V, --vars =
Показать доступные локальные переменные в заданной точке исследования. Синтаксис аргумента такой же, как
PROBE SYNTAX, но НЕТ ARG.
--externs
(Только для --vars) Показывать внешние определенные переменные в дополнение к локальным переменным.
--без строчки
(Только для --add) Искать только не встроенные функции. Функции, которые не
экземпляры have игнорируются.
-F, --funcs [= ФИЛЬТР]
Показать доступные функции в данном модуле или ядре. С -x / - exec также можно перечислить
функции в исполняемой / разделяемой библиотеке пользовательского пространства. Это также может принимать ФИЛЬТР
аргумент правила.
--filter = ФИЛЬТР
(Только для --vars и --funcs) Установить фильтр. ФИЛЬТР - это комбинация шаблона глобуса, см.
ФИЛЬТР ШАБЛОН для деталей. ФИЛЬТР по умолчанию - "!k ??? tab_ * & !crc_ * "для --vars и
"! _ *" для --funcs. Если указано несколько фильтров, используется только последний фильтр.
-ф, --сила
Принудительно добавлять события с существующим именем.
-n, -- пробный запуск
Прогон, репетиция. С этой опцией --add и --del не выполняют фактическое добавление и удаление
операций.
--max-probes = ЧИСЛО
Установите максимальное количество точек тестирования для события. По умолчанию 128.
-x, --exec = ПУТЬ
Укажите путь к исполняемому файлу или файлу общей библиотеки для трассировки пользовательского пространства. Может также
использоваться с опцией --funcs.
- распутать
Разобрать символы приложения. --no-demangle также доступен для отключения
демонтаж.
--demangle-kernel
Разбирать символы ядра. --no-demangle-kernel также доступен для отключения ядра
демонтаж.
При отсутствии параметров -m / -x, perf probe проверяет, является ли первый аргумент после параметров
абсолютное имя пути. Если это абсолютный путь, perf probe использует его как цель
модуль / целевой двоичный файл пользовательского пространства для проверки.
PROBE СИНТАКСИС
Точки измерения определяются следующим синтаксисом.
1) Определите событие на основе имени функции
[СОБЫТИЕ =] FUNC [@SRC] [: RLN | + OFFS |% доходности |; PTN] [ARG ...]
2) Определите событие на основе исходного файла с номером строки
[СОБЫТИЕ =] SRC: ALN [ARG ...]
3) Определите событие на основе исходного файла с ленивым шаблоном
[СОБЫТИЕ =] SRC; PTN [ARG ...]
СОБЫТИЕ указывает имя нового события, если опущено, будет установлено имя зондированного
функция. В настоящее время название группы событий установлено как зонд. FUNC определяет исследуемую функцию
имя, и у него может быть один из следующих вариантов; + ВЫКЛ это смещение от функции
адрес входа в байтах, : RLN - номер относительной строки из строки ввода функции, а
%возвращение означает, что он проверяет возврат функции. А также ; ПТС означает ленивое сопоставление с шаблоном (см.
LAZY MATCHING). Обратите внимание, что ; ПТС должен быть концом определения точки измерения. Кроме того,
@SRC указывает исходный файл, который имеет эту функцию. Также можно указать
точка проверки по номеру исходной строки или ленивое сопоставление с использованием SRC: ALN or SRC; ПТС синтаксис,
в котором SRC путь к исходному файлу, : ALN это номер строки и ; ПТС ленивое сопоставление
шаблону. ARG задает аргументы этой точки тестирования (см. АРГУМЕНТ ЗОНДА).
PROBE АРГУМЕНТ
Каждый аргумент зонда следует синтаксису ниже.
[ИМЯ =] LOCALVAR | $ retval |% REG | @SYMBOL [: TYPE]
ИМЯ указывает имя этого аргумента (необязательно). Вы можете использовать имя местного
переменная, член локальной структуры данных (например, var → field, var.field2), локальный массив с фиксированным
индекс (например, array [1], var → array [0], var → pointer [2]) или формат аргумента kprobe-tracer
(например, $ retval,% ax и т. д.). Обратите внимание, что имя этого аргумента будет установлено как последнее
имя члена, если вы указываете член локальной структуры данных (например, field2 для
var → field1.field2.) $ vars и $ params специальные аргументы также доступны для NAME, $ vars
расширяется до локальных переменных (включая параметры функций), к которым можно получить доступ по адресу
заданная точка измерения. $ params расширяется только до параметров функции. ТИП бросает
тип этого аргумента (необязательно). Если этот параметр не указан, перфо зонд автоматически устанавливает тип на основе
на debuginfo. Вы можете указать string тип только для локальной переменной или члена структуры
который является массивом или указателем на колесница or неподписанный колесница тип.
В системах x86% REG всегда является сокращенной формой реестра: например% AX. % RAX или
% EAX недействителен.
ЛИНИЯ СИНТАКСИС
Диапазон строк описывается следующим синтаксисом.
"FUNC [@SRC] [: RLN [+ NUM | -RLN2]] | SRC [: ALN [+ NUM | -ALN2]]"
FUNC определяет имя функции отображения строк. РЛН это номер начальной строки от
строка ввода функции и РЛН2 - номер конечной строки. То же, что и синтаксис зонда, SRC означает
путь к исходному файлу, АЛН - номер начальной строки, а АЛН2 это номер конечной строки в файле.
Также можно указать, сколько строк показывать, используя NUM, Более того, FUNC @ SRC
комбинация хороша для поиска определенной функции, когда несколько функций имеют одинаковые
имя. Итак, «source.c: 100-120» показывает строки от 100 до 20 в файле source.c. А также
«func: 10 + 20» показывает 20 строк из 10-й строки функции func.
LAZY МАТЧИКИ
Ленивое сопоставление строк похоже на сопоставление глобусов, но игнорирует пробелы как в шаблоне, так и в цели. Таким образом, он принимает подстановочные знаки ('*', '?') И классы символов (например, [az], [! AZ]).
или а = * может совпадать а = Ь, a = b, a == b и т. д.
Это обеспечивает некоторую гибкость и надежность при проверке определений точек по отношению к
незначительные изменения кода. Например, актуальную 10-ю строку расписания () можно легко переместить с помощью
изменение schedule (), но соответствие той же строки rq = cpu_rq * может все еще существовать в
функция.)
ФИЛЬТР ШАБЛОН
Шаблон фильтра - это шаблон (ы) сопоставления глобуса для фильтрации переменных.
Кроме того, вы можете использовать "!" для определения правила фильтрации. Вы также можете указать несколько правил в сочетании с «&» или «|» и сложить эти правила в одно правило, используя «(« »)».
например, с --filter "foo * | bar *", perf probe -V показывает переменные, которые начинаются с "foo" или
"бар". С --filter "! Foo * & * bar", perf probe -V показывает переменные, которые не начинаются с
«foo» и заканчиваться на «bar», как «fizzbar». Но "foobar" отфильтровывается.
ПРИМЕРЫ
Отобразите, какие строки в schedule () можно исследовать:
./perf probe - линейное расписание
Добавьте 12-ю строку функции probe on schedule () с записью локальной переменной процессора:
./perf расписание зонда: 12 ЦП
or
./perf probe --add = 'schedule: 12 cpu'
это добавит один или несколько зондов, имя которых начинается с "schedule".
Добавьте зонды в строки в функции schedule (), которая вызывает update_rq_clock ().
./perf probe 'расписание; update_rq_clock *'
or
./perf probe --add = 'расписание; update_rq_clock *'
Удалите все зонды по расписанию ().
./perf probe --del = 'расписание *'
Добавить зонды в функцию zfree () в / bin / zsh
./perf зонд -x / bin / zsh zfree или ./perf зонд / bin / zsh zfree
Добавить зонды в функцию malloc () в libc
./perf probe -x /lib/libc.so.6 malloc или ./perf probe /lib/libc.so.6 malloc
Используйте perf-probe онлайн с помощью сервисов onworks.net