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は設定情報を書き込み、カーネルインタフェースファイルコードを参照できます.
      
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]