デバッグで役立つオプションの 1 つは、呼び出しトレース/スタック トレースを出力することです。 Linux カーネルは、スタック トレースを出力する関数を提供します:dump_stack()。 dump_stack 関数は、パニックやおっとのようにスタック トレースを生成しますが、問題は発生せず、通常の制御フローに戻ります。
dump_stack() 関数を呼び出すと、その時点でスタック トレースが出力されます。
コード:
#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");
出力: