Poprzedni temat Spis treści Następny temat

Debugowanie modułów pod UML-em

Są dwa sposoby debugowania jądra. Jeden prostszy korzystający z gotowego skryptu pana Chandana Kudige'a i drugi wykonanie wszystkiego samemu. Opiszę tylko ten pierwszy sposób, a informacje o drugim można znaleźć na stroniehttp://user-mode-linux.sourceforge.net.

Wyżej wymieniony skrypt znajduje się w pakiecie UML-Utilities. Aby debugować moduły jądra przy jego pomocy musimy najpierw podać jakie moduły chcemy śledzić. Robimy to modyfikując w skrypcie umlgdb następujący fragment:
set MODULE_PATHS
{
"fat" "/usr/src/uml/linux-2.4.18/fs/fat/fat.o"
"isofs" "/usr/src/uml/linux-2.4.18/fs/isofs/isofs.o"
"minix" "/usr/src/uml/linux-2.4.18/fs/minix/minix.o"
}
Musimy tutaj wpisać nazwy i ścieżki do modułów nas interesujących. I już wtedy jesteśmy gotowi do uruchomienia skryptu. Uruchamiamy go z katalogu, w którym mamy zainstalowanego UML. Jednym z pierwszych komunikatów jaki ujrzymy powinno być coś wygladającego podobnie do:

******** GDB pid is 16333 ********
Start UML as: ./linux debug gdb-pid=16333

Jest to informacja jak mamy uruchomić teraz UML-a. Postępujemy więc zgodnie z instrukcjami skryptu. Uruchamiamy UML-a poleceniem
./linux debug gdb-pid=16333
Musimy się jeszcze podłączyć pod UML-a:
(gdb) att 1
(gdb) c
Potem w UML-u ładujemy interesujące nas moduły. Skrypt umlgdb w każdym z podanych przez nas modułow wstawił pułapkę na funkcji inicjującej moduł. Dzięki temu będziemy mogli od samego początku śledzić wykonanie modułu za pomocą komend gdb.

© 2004 Mateusz Chrzęst, Piotr Krawczyk, Adam Kruszewski.