Как использовать опцию stap -L?
Я следую учебному пособию по SystemTap и пытаюсь выполнить упражнение 1 из раздела 2.3 - "Трассировка. Упражнения". -L
вариант, кажется, никогда не работает. Я получил этот скрипт:
probe kernel.function("*nit*"){}
Я набираю в терминале:
$ stap -L PROBE t.stp
и ничего не происходит
4 ответа
$ stap -L 'kernel.function("blahblah")'
Systemtap отличная, но плохая документация.
От man stap
(с systemtap*-1.7-2.fc15.x86_64
RPM установлены)
stap [ OPTIONS ] -l PROBE [ ARGUMENTS ]
stap [ OPTIONS ] -L PROBE [ ARGUMENTS ]
-l PROBE
Instead of running a probe script, just list all available probe
points matching the given single probe point. The pattern may
include wildcards and aliases, but not comma-separated multiple
probe points. The process result code will indicate failure if
there are no matches.
-L PROBE
Similar to "-l", but list probe points and script-level local
variables.
"точки проверки" относятся к "kernel.function("blahblah")" и т. д. До этого не было ключевого слова "датчик", а впоследствии не было обработчика проверки.
Вы можете попробовать следующие примеры.
Чтобы получить список всех функций ядра.
$ stap -l 'kernel.function ("*")' | Сортировать
kernel.function("vfs_read@/build/linux-lts-xenial-Hu9lgy/linux-lts-xenial-4.4.0/fs/read_write.c:440") [....]
Чтобы получить функцию ядра и аргументы (локальные переменные)
$ stap -L 'kernel.function ("*")' | grep vfs_read
kernel.function ("vfs_read@/build/linux-lts-xenial-Hu9lgy/linux-lts-xenial-4.4.0/fs/read_write.c: 440") $ file: struct file * $ buf: char * $ count: size_t $ pos: loff_t *
[....]
Просто добавлю к тому, что более образованные люди, чем я, сказали:
stap -L 'module("module-name-here").function("*")'
Для обычных тестов ядра:
stap -L 'kernel.function("*")'
Надеюсь, что это поможет кому-то еще в будущем!