dynamicdebugダイナミック印刷
前にprintk_を紹介しましたonce、一度だけ印刷します.
場合によってはkernel実行時に動的に印刷する必要があるかどうか、dynamic debugが役に立ちます.
具体的な使い方は、kernel/Documentationdynamic-debug-howto.txt
手順:
//印刷
echo 'file nand.c line 4210 +p' >/sys/kernel/debug/dynamic_debug/control
//echo'file nandを印刷しない.c line 4210 -p' >/sys/kernel/debug/dynamic_debug/control
//使用例
pr_debug(" dynamic debug ");
不思議なことに、パラメータ-cを加えると、ローカル検証は機能しません.
なぜdynamic_へdebug/controlは設定情報を書き込み、カーネルインタフェースファイルコードを参照できます.
kernelをコンパイルするときに使用し、dynamic debugをコンパイルしてください.(menuconfig)
│ Symbol: DYNAMIC_DEBUG [=y] │ │ Prompt: Enable dynamic printk() support │ │ Defined at lib/Kconfig.debug:1039 │ │ Depends on: PRINTK [=y] && DEBUG_FS [=y] │ │ Location: │ │ -> Kernel hacking
または直接変更
./configファイルCONFIG_DYNAMIC_DEBUG=y
注意:Depends on:PRINTK[=y]&&DEBUG_に依存するFS [=y]
場合によってはkernel実行時に動的に印刷する必要があるかどうか、dynamic debugが役に立ちます.
具体的な使い方は、kernel/Documentationdynamic-debug-howto.txt
手順:
//印刷
echo 'file nand.c line 4210 +p' >/sys/kernel/debug/dynamic_debug/control
//echo'file nandを印刷しない.c line 4210 -p' >/sys/kernel/debug/dynamic_debug/control
//使用例
pr_debug(" dynamic debug ");
不思議なことに、パラメータ-cを加えると、ローカル検証は機能しません.
なぜdynamic_へdebug/controlは設定情報を書き込み、カーネルインタフェースファイルコードを参照できます.
static int __init dynamic_debug_init(void)
{
struct dentry *dir, *file;
struct _ddebug *iter, *iter_start;
const char *modname = NULL;
int ret = 0;
int n = 0;
dir = debugfs_create_dir("dynamic_debug", NULL);
if (!dir)
return -ENOMEM;
file = debugfs_create_file("control", 0644, dir, NULL,
&ddebug_proc_fops);
kernelをコンパイルするときに使用し、dynamic debugをコンパイルしてください.(menuconfig)
│ Symbol: DYNAMIC_DEBUG [=y] │ │ Prompt: Enable dynamic printk() support │ │ Defined at lib/Kconfig.debug:1039 │ │ Depends on: PRINTK [=y] && DEBUG_FS [=y] │ │ Location: │ │ -> Kernel hacking
または直接変更
./configファイルCONFIG_DYNAMIC_DEBUG=y
注意:Depends on:PRINTK[=y]&&DEBUG_に依存するFS [=y]