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
-
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.
-
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