Poprzedni temat | Spis treści | Następny temat |
Opiszę jak można debugować jądro UML-a za pomocą gdb. Oczywiście UML potrafi współpracować z innymi debugerami, ale prezentacja nie obejmowała tego tematu. Tylko wspomnę jak można uruchomić ddd do debugowania jądra UML-a.
Podczas kompilowania jądra dla UML-a trzeba pamiętać o zaznaczeniu Enable kernel debugging symbols i Enable ptrace proxy, dzięki czemu jądro zostanie skompilowane z opcją -g. Po skompilowaniu nie należy usuwać znaczników, bo to właśnie dzięki nim możemy debugować jądro.
Możemy to zrobić na 3 sposoby w zależności od tego czego oczekujemy i czy już został uruchomiony uml.
Czasem zdarza się, że niepoprawne działanie jest spowodowane działaniem innego procesu niż aktualnie wykonywany. Może on spać na jakimś semaforze lub czekać na jakiejś kolejce.
Dzięki gdb możemy podłączyć się do takiego procesu. W tym celu należy wykonać następujące czynności:
(gdb) det
Odłączamy się od aktualnie śledzonego procesu
(gdb) att <nr PID>
Podłączamy się pod interesujący nas proces. Przy czym musimy podać PID procesu w systemie macierzystym. Można uzyskać go przez śledzenie wyników wykonywania polecenia ps -a.
W tym momencie możemy wypisać interesujące nas dane dotyczące tego procesu.
Żeby system mógł dalej działać musimy wznowić działanie procesu, który był wykonywany wcześniej. Robimy to za pomocą następujących komend:
(gdb) det
(gdb) att 1
(gdb) c
© 2004 Mateusz Chrzęst, Piotr Krawczyk, Adam Kruszewski. |