Dynamický debug jádra
Výpisy z jádra linuxu se neprovádí pomocí standartního printf, ale pomocí speciální funkce printk. Tato funkce je velmi často obalená v dalších funkcích, které usnadňují vypisování. Přidávají jméno modulu, číslo řádku, jméno funkce apod. Jednou z takových funkcí je i dev_dbg(dev, format, …); Je definovaná v include/linux/device.h následovně.
1 2 3 4 |
#define dev_dbg(dev, format, ...) \ do { \ dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \ } while (0) |
Funkce dynamic_dev_dbg pak pracuje tak, že vypisuje pouze v případě, že je daný výpis aktivován. Zapnutí výpisu je možné v takzvaném debugfs, který je nutné nejdříve připojit.
1 2 3 |
mount -t debugfs none /sys/kernel/debug/ cd /sys/kernel/debug/dynamic_debug/ cat control |
Posledním příkazem dojde k výpisu registrovaných výpisů. Zapnutí jednotlivých výpisů se pak provede následujícím způsobem.
1 |
echo 'file drivers/w1/w1.c line 891 +p' > control |
Výpisy je poté možné sledovat jako vždy v dmesg.