KDB
Co to jest?
KDB (built-in Kernel DeBugger for linux) jest patch'em na jądro Linux'a, który umożliwia badanie zawarości pamięci, struktur danych, stanu procesu w trakcie działania systemu.
KDB wymaga JEDNEJ maszyny.
KDB Obsługuje systemy wieloprocesorowe.
NIE jest możliwe debugowanie z poziomu kodu - tylko instrukcje assemblera.
Instalacja
Instalacja w skrócie polega na dodaniu patch'y i rekompilacji jądra.
Należy wykonać następujące kroki:
- 
Ściągnąc dwa patch'e dla odpowiedniej wersji jądra - Strona projektu KDB.
np: kdb-v4.4-2.6.17-common-1.bz2 kdb-v4.4-2.6.17-i386-1.bz2 Dla KDB w wersji 4.4 na jądro 2.6.17 na archtekturę i386. 
- 
Skopiować ściągnięte patch'e do /usr/src/linux i rozpakować:
#bzip2 -d kdb-v4.4-2.6.17-common-1.bz2 #bzip2 -d kdb-v4.4-2.6.17-i386-1.bz2 
- 
Zastosować patch'e:
#patch -p1 <kdb-v4.4-2.6.17-common-1 #patch -p1 <kdb-v4.4-2.6.17-i386-1 
- 
Wybór opcji kompilacji jądra - sekcja "Kernel Hacking":
	"Built-in Kernel Debugger support" - ustawia flagę CONFIG_KDB - wymagane "Compile the kernel with frame pointers" - ustawia flagę CONFIG_FRAME_POINTER - opcjonalnie
(lepsze śledzenie stosu wywołań) "KDB off by default" - ustawia flagę CONFIG_KDB_OFF - KDB wylączone domyślnie 
- 
Rekompiacja jądra - zalecane "make clean" przed kompilacją.
Praca z KDB
Gdy KDB jest aktywne i zostanie przywołane (szczegóły niżej) system zostaje zatrzymany. Użytkownik znajduje się wtedy w trybie pracy z KDB i może debuggować jądro systemu. Polecenie 
"go" powoduje wznowienie wykonywania kodu jądra przez system.
Aktywowanie
KDB jest domyślnie aktywne od startu systemu. Sytuację tą zmienia wybranie flagi 
CONFIG_KDB_OFF przed kompilacją jądra.
W takim wypadku KDB aktywujemy ustawiając flagę 
"kdb=on" przed załadowaniem systemu. 
Możemy to zrobić również po załadowaniu systemu:
#echo "1" >/proc/sys/kernel/kdb
Podobnie postępujemy, gdy KDB jest domyślnie aktywne i chcemy je deaktywować.
"kdb=off"
#echo "0" >/proc/sys/kernel/kdb
Przywoływanie
KDB zostaje przywołane w następujących przypadkach:
automatycznie - jeśli napotkamy na kernel panic,
automatycznie - jeśli napotka na wcześniej zdefiniowany breakpoint,
ręcznie - przez naciśnięcie PAUSE (Ctrl-Pause Break) przez użytkownika,
Ctrl-A - wywołuje KDB z serial console.
Możliwości
Śledzenie wykonania kodu jądra instrukcja po instrukcji (assembler).
Wyświetlanie zawartości pamięci i możliwość wprowadzania zmian.
Zatrzymanie wykonania w wyniku napotkania na określoną instrukcję.
Zatrzymanie wykonania w wyniku dostępu (modyfikacji) określonych miejsc w pamięci.
Zatrzymanie wykonania w wyniku dostępu (modyfikacji) rejestrów.
Oglądanie stosu wywołań dla określonego procesu (podając PID).
Deasemblacja instrukcji.
Komendy KDB
Do zbioru komend z poziomu KDB dostajemy się poleceniem 
"help". 
Są one na tyle dobrze opisane, że można się bez problemu zorientować, do czego służą.
Ponadto w internecie znajduje się wiele stron przedstawiających i opisujących komendy KDB wraz z przykładami zastosowania. Zamiast przepiywać ich zawartość podam odpowiednie linki: