Проверка трассировочных точек в файле /proc/kallsyms
На предыдущих этапах мы узнали, как перечислить трассировочные точки с использованием файловой системы трассировки и утилиты trace-cmd
. Теперь давайте рассмотрим другой способ просмотра информации о трассировочных точках: файл /proc/kallsyms
.
Файл /proc/kallsyms
содержит адреса и имена всех экспортированных символов ядра, включая функции и переменные. Трассировочные точки также представлены в этом файле как символы.
Вы можете использовать команды, такие как cat
и grep
, чтобы найти символы трассировочных точек в файле /proc/kallsyms
. Символы трассировочных точек обычно следуют определенному соглашению об именовании и часто содержат tracepoint
или _tracepoint
.
Давайте попробуем найти символы, связанные с трассировочными точками, в файле /proc/kallsyms
. Мы используем cat
для чтения файла и передаем вывод в grep
, чтобы найти строки, содержащие слово "tracepoint".
Введите следующую команду и нажмите Enter:
cat /proc/kallsyms | grep tracepoint
Эта команда отобразит строки из файла /proc/kallsyms
, содержащие строку "tracepoint". Вы увидите вывод, похожий на следующий:
...
ffffffffXXXXXXXX R __tracepoint_module_load
ffffffffXXXXXXXX R __tracepoint_module_free
ffffffffXXXXXXXX R __tracepoint_module_get
ffffffffXXXXXXXX R __tracepoint_module_put
ffffffffXXXXXXXX R __tracepoint_module_request_module
ffffffffXXXXXXXX R __tracepoint_module_module_init
ffffffffXXXXXXXX R __tracepoint_module_module_exit
ffffffffXXXXXXXX R __tracepoint_module_module_request
ffffffffXXXXXXXX R __tracepoint_module_module_autoload
ffffffffXXXXXXXX R __tracepoint_module_module_kset_reg
ffffffffXXXXXXXX R __tracepoint_module_module_kset_unreg
...
XXXXXXXX
представляет собой шестнадцатеричные адреса, которые будут различными на вашей системе. Важной частью является имя символа, которое часто начинается с __tracepoint_
, за которым следуют имя подсистемы и события.
Это подтверждает, что трассировочные точки действительно представлены как символы в таблице символов ядра, доступной через /proc/kallsyms
. Хотя /sys/kernel/debug/tracing
и trace-cmd
предоставляют более удобный интерфейс для управления и просмотра трассировочных точек, понимание того, что они существуют как символы ядра, является фундаментом для более продвинутых концепций трассировки ядра.
Теперь вы узнали три различных способа идентификации и проверки трассировочных точек в системе Linux.
Нажмите Продолжить, чтобы завершить этот практический урок.