Najczęstszym sposobem odpluskwiania programu i nie wymagającym użycia żadnych dodatkowych narzędzi jest użycie funkcji printf() do wypisania komunikatu podczas pracy programu. Zazwyczaj owym komunikatem będzie ostrzeżenie o błędzie w działaniu danej funkcji czy to spowodowanym złymi danymi czy też przekroczeniem uprawnień lub ograniczeń narzuconych przez system.
Printk() pełni tę samą rolę co powyższa funkcja, tyle tylko że:
Przykładowa funkcja:
printk(KERN_DEBUG "Here i am: %s:%i\n", _ _FILE_ _, _ _LINE_ _);Uwaga: Nie ma przecinka między priorytetem a komunikatem, więc ewentualny priorytet podaje się jak wyżej, po czym jest on zamieniany na odpowiedni znak z odpowiednim numerem z tabelki poniżej i w tej postaci pamiętany.
Według malejącej ważności:
Nazwa (define) |
Znak |
Opis |
KERN_EMERG |
<0> |
awaria systemu |
KERN_ALERT |
<1> |
należy podjąć natychmiastową interwencję |
KERN_CRIT |
<2> |
należy podjąć natychmiastową interwencję |
KERN_ERR |
<3> |
błąd (używane np. przez sterowniki) |
KERN_WARNING |
<4> |
ostrzeżenie |
KERN_NOTICE |
<5> |
normalna, ale istotna sytuacja (np. bezpieczeństwo systemu) |
KERN_INFO |
<6> |
informacja (np. znalezienie sprzętu) |
KERN_DEBUG |
<7> |
komunikat diagnostyczny |
W przypadku standardowej konfiguracja demona syslogd oraz przy działającym demonie klogd, powyższe wiadomości od jądro będą trafiać do logu /var/log/messages.
Przykładowy wpis w syslog.conf:
# Kernel messages are first, stored in the kernel # file, critical messages and higher ones also go # to another host and to the console # kern.* /var/adm/kernel kern.crit @serwer kern.crit /dev/console kern.info;kern.!err /var/adm/kernel-infoZnaczenie powyższego wpisu:
Uwaga:
Zatem jej użycie będzie miało zazwyczaj postać:
#include < linux/kernel.h> if (printk_ratelimit()) printk(PRIORYTET "komunikat");Ograniczenia ustalamy w plikach: