Próbuję zdalnie debugować aplikację uruchomioną na komputerze o adresie 192.168.98.64. Na tej maszynie biegnę:Zdalne debugowanie GDB nie może znaleźć symboli
gdbserver serveripaddr:4444 progname
następnie z serwera biegnę „gdb”, a następnie w gdb szybkiego biegu:
(gdb) target remote 192.168.98.64:4444 Remote debugging using 192.168.98.64:4444 [New Thread 28432] warning: Could not load vsyscall page because no executable was specified try using the "file" command first. 0xb775e810 in ??() (gdb) break internal[TAB]
Spodziewałem się naciśnięcie klawisza TAB, gdy próbuje ustawić mój punkt przerwania, aby wyświetlić listę odpowiednich funkcji, zaczynając od wewnętrznego, ale nic nie wywołuje. Kod został skompilowany z włączonym debugowaniem z opcją -g. Co ja robię źle?
Jeśli nie używam '-g' w czasie kompilacji mogę wtedy moove tylko przez etykiet że ręcznie określone. Czym dokładnie są symbole debugowania? Czy GDB tworzy etykiety '1:', '2:', '3:' ... dla każdej linii pliku źródłowego? – 71GA
Symbole są informacjami skompilowanymi w systemie binarnym (tryb debugowania) w celu powiązania instrukcji z tekstem kodu. Aby wyświetlić informacje czytelne dla człowieka w debugerze. Aby to działało musisz skompilować się z '-g' i znajdować się w katalogu źródłowym, aby' gdb' mógł znaleźć pliki źródłowe wskazane przez plik binarny debugowania. –