Whats the easiest way to debug ?
The easiest way is the one you know. For most of us thats printf(), or its kernel version:
#include <device.h> ... printk(KERN_INFO DRVNAME "%s %s\n", info1, info2); printk(KERN_ERR DRVNAME "something bad: %s\n", errstr); printk("logged at (what?) default\n");
In lines 1,2, note the lack of comma after KERN_INFO and DRVNAME. These are string values that are catenated, per C language spec, to the front of the format string.
KERN_INFO and friends are defined here: https://elixir.bootlin.com/linux/v5.10/source/include/linux/kern_levels.h#L14
The logging system reads the numbers, and steers the message accorgingly.
Anything with less typing ?
For drivers with a struct device, device.h provides an easier way:
#include <device.h> ... dev_info("%s %s\n", info1, info2); dev_err("something bad: %s\n", errstr);
Messages issued by these statements include driver name, etc.
dev_dbg()
This symbol has additional feature - the statement typically disappears at compile-time, allowing developer to keep debug code w/o runtime penalties.
#define DEBUG 1 #include <device.h> ... dev_dbg("%s %s\n", info1, info2);
I'm still not seeing the debug messages !
If you're looking at the console for messages, may be you need to raise its verbosity:
echo 8 > /proc/sys/kernel/printk
this will cause dev_dbg() messages, which are logged at level "<7>", to be reported to the console.