Debian

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ě.

#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.

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.

echo 'file drivers/w1/w1.c line 891 +p' > control

Výpisy je poté možné sledovat jako vždy v dmesg.


Posted

in

, ,

by

Tags: