gdbserver

gdbserver to program komputerowy umożliwiający zdalne debugowanie innych programów. Działając w tym samym systemie, co program do debugowania, umożliwia debugerowi GNU łączenie się z innego systemu; to znaczy tylko plik wykonywalny do debugowania musi znajdować się w systemie docelowym („cel”), podczas gdy kod źródłowy i kopia pliku binarnego do debugowania znajdują się na komputerze lokalnym programisty („host”). Połączenie może być realizowane za pomocą protokołu TCP lub łącza szeregowego.

Jak to działa

  1. gdbserver jest uruchamiany w systemie docelowym z argumentami:
    • Albo nazwę urządzenia (aby użyć linii szeregowej), albo nazwę hosta TCP i numer portu oraz
    • Ścieżka i nazwa pliku wykonywalnego do debugowania
    Następnie czeka biernie, aż gdb hosta się z nim skomunikuje.
  2. gdb jest uruchamiany na hoście z argumentami:
    • Ścieżka i nazwa pliku wykonywalnego (i wszelkich źródeł) na hoście oraz
    • Nazwa urządzenia (dla linii szeregowej) lub adres IP i numer portu potrzebne do połączenia z systemem docelowym.

Przykład debugowania programu o nazwie hello_world na zdalnym obiekcie docelowym przy użyciu protokołu TCP („2159” to zarejestrowany numer portu TCP dla zdalnego GDB ):


 remote@~$  gdbserver :2159 hello_world  Utworzono proces hello_world; pid = 2509   Nasłuch na porcie 2159 

 


 





 local@~$  gdb -q hello_world  Odczytywanie symboli z /home/user/hello_world... gotowe.  (gdb)  target remote 192.168.0.11:2159  Zdalne debugowanie przy użyciu 192.168.0.11:2159  0x002f3850 w ?? () z /lib/ld-linux.so.2   (gdb)  kontynuuj  Kontynuacja.  Odebrany sygnał programu SIGSEGV, błąd segmentacji.  0x08048414 w main () w hello_world.c:10  10 printf("x[%d] = %g\n", i, x[i]);  (gdb) 

Alternatywy

Inną techniką zdalnego debugowania programów jest użycie zdalnego kodu pośredniczącego . [ wymagane wyjaśnienie ] W tym przypadku program do debugowania jest połączony z kilkoma podprogramami specjalnego przeznaczenia, które implementują zdalny protokół szeregowy GDB. Plik zawierający te podprogramy nazywany jest „końcówką debugowania”.

Zobacz też

Notatki

  •   Andreas Zeller: Dlaczego programy zawodzą: przewodnik po systematycznym debugowaniu , Morgan Kaufmann, 2005. ISBN 1-55860-866-4

Linki zewnętrzne