Как использовать опцию stap -L?

Я следую учебному пособию по SystemTap и пытаюсь выполнить упражнение 1 из раздела 2.3 - "Трассировка. Упражнения". -L вариант, кажется, никогда не работает. Я получил этот скрипт:

probe kernel.function("*nit*"){}

Я набираю в терминале:

$ stap -L PROBE t.stp

и ничего не происходит

4 ответа

Решение
$ stap -L 'kernel.function("blahblah")'

Systemtap отличная, но плохая документация.

От man stapsystemtap*-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 kernel.function("*nit*") | sort

Просто добавлю к тому, что более образованные люди, чем я, сказали:

stap -L 'module("module-name-here").function("*")'

Для обычных тестов ядра:

stap -L 'kernel.function("*")'

Надеюсь, что это поможет кому-то еще в будущем!

Другие вопросы по тегам