Отладочные отпечатки Linux-ядра?
Есть ли лучший способ отладки распечаток в ядре Linux?
Прямо сейчас засорив код:
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
Это не очень чисто.
Для всей строки должно быть #ifdef
: ed в некотором хорошем виде.
Ответы
Ответ 1
Использование
/* At the top of the file, before any includes */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/printk.h>
/* in code... */
pr_devel("foobar happened\n");
в качестве основы (стандартная практика). Затем вы можете добавить __FILE__
или __LINE__
в определение pr_fmt
.
Ответ 2
Если это для быстрой отладки, просто printk() работает хорошо.
Если это для отладки в большей производственной ситуации, возможно, используйте pr_debug(), поэтому сообщения можно включить во время выполнения.
Несмотря на это, обычно ( "% s: xxx", func). Эти имена файлов и номера строк будут очень раздражать. Вот почему вы не нашли никакого "стандартного" решения - потому что его нет.