Überprüfen von Tracepoints in /proc/kallsyms
In den vorherigen Schritten haben wir gelernt, wie man Tracepoints (Kernel-Spurpunkte) mithilfe des Tracing-Dateisystems und des trace-cmd
-Hilfsprogramms auflistet. Jetzt erkunden wir eine andere Möglichkeit, Informationen zu Tracepoints zu erhalten: die Datei /proc/kallsyms
.
Die Datei /proc/kallsyms
enthält die Adressen und Namen aller exportierten Kernel-Symbole, einschließlich Funktionen und Variablen. Tracepoints werden in dieser Datei ebenfalls als Symbole dargestellt.
Sie können Befehle wie cat
und grep
verwenden, um nach Tracepoint-Symbolen in /proc/kallsyms
zu suchen. Tracepoint-Symbole folgen in der Regel einer Namenskonvention und enthalten oft tracepoint
oder _tracepoint
.
Versuchen wir, Symbole in /proc/kallsyms
zu finden, die mit Tracepoints zusammenhängen. Wir verwenden cat
, um die Datei zu lesen, und leiten die Ausgabe an grep
weiter, um nach Zeilen zu suchen, die das Wort "tracepoint" enthalten.
Geben Sie den folgenden Befehl ein und drücken Sie Enter:
cat /proc/kallsyms | grep tracepoint
Dieser Befehl zeigt die Zeilen aus /proc/kallsyms
an, die die Zeichenkette "tracepoint" enthalten. Sie werden eine Ausgabe ähnlich der folgenden sehen:
...
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
...
Das XXXXXXXX
steht für hexadezimale Adressen, die auf Ihrem System unterschiedlich sein werden. Der wichtige Teil ist der Symbolname, der oft mit __tracepoint_
beginnt, gefolgt vom Subsystem- und Ereignisnamen.
Dies bestätigt, dass Tracepoints tatsächlich als Symbole in der Kernel-Symboltabelle dargestellt werden, auf die über /proc/kallsyms
zugegriffen werden kann. Während /sys/kernel/debug/tracing
und trace-cmd
eine benutzerfreundlichere Schnittstelle für die Verwaltung und Ansicht von Tracepoints bieten, ist das Verständnis, dass sie als Kernel-Symbole existieren, grundlegend für fortgeschrittene Kernel-Tracing-Konzepte.
Sie haben nun drei verschiedene Methoden gelernt, um Tracepoints auf einem Linux-System zu identifizieren und zu untersuchen.
Klicken Sie auf Weiter, um dieses Lab abzuschließen.