next next
Next: Narzędzia strace i ltrace Previous: Wstęp do odpluskwiania

Funkcja printk() oraz demony Klogd i Syslogd

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.

Jak to działa?

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-info

Znaczenie powyższego wpisu:

Uwaga: