Poprzedni temat | Spis treści | Następny temat |
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
Jest to informacja jak mamy uruchomić teraz UML-a. Postępujemy więc zgodnie z instrukcjami skryptu. Uruchamiamy UML-a poleceniem
./linux
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. |