Beispiel eines Linux-Gerätetreibers für dump_stack() zum Drucken des Stack-Trace des Modulladens

Beispiel eines Linux-Gerätetreibers für dump_stack() zum Drucken des Stack-Trace des Modulladens

Eine der nützlichen Optionen beim Debuggen ist das Drucken des Anruf-Trace/Stack-Trace. Der Linux-Kernel bietet eine Funktion zum Drucken des Stack-Trace:dump_stack(). Die Funktion dump_stack erzeugt einen Stack-Trace ähnlich wie Panic und Hoppla, verursacht aber keine Probleme und wir kehren zum normalen Kontrollfluss zurück.

Der Aufruf der Funktion dump_stack() druckt den Stack-Trace an diesem Punkt.

Code:

#include <linux/module.h>
#include <linux/kernel.h>

static int myinit(void)
{
	pr_info("dump_stack myinit\n");
	dump_stack();
	pr_info("dump_stack after\n");
	return 0;
}

static void myexit(void)
{
	pr_info("panic myexit\n");
}

module_init(myinit)
module_exit(myexit)
MODULE_LICENSE("GPL");

Ausgabe: