モジュールのロードのスタック トレースを出力するための dump_stack() の Linux デバイス ドライバーの例

デバッグで役立つオプションの 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");

出力: