2013-10-03 13 views
8

Używam gdb do debugowania kodu źródłowego projektu C. Kompiluję, jak pokazano:Brak pliku źródłowego o nazwie main.c. Ustawienie punktu przerwania gdb

./configure --enable-debug CFLAGS="-g -o0" 
make --debug=a 

Chcę debugowania zatrzymać w określonym pliku. Więc kiedy ustawić punkt przerwania używając

(gdb) break main.c:672 

Mówi:

No source file named main.c. 

Nawet kiedy przechodzą specyficzną nazwę funkcji (w pliku main.c) do złamania. mówi: taka funkcja nie jest zdefiniowana.

Mój aktualny katalog zawiera plik main.c. Używam Cygwin w systemie Windows. Po ustawieniu punktu przerwania za pomocą tej opcji należy ustawić punkt przerwania w głównej funkcji pliku Cygwin, a nie w moim kodzie źródłowym.

  1. Jak mogę naprawić mój pierwszy problem?

  2. Po prostu ciekawy, jak uniknąć drugiego problemu, jeśli jest taka sama nazwa funkcji w plikach Cygwin i mój kod źródłowy?

Odpowiedz

2

Jeśli kompilacji z -g i nadal nie można ustawić punkt przerwania, spróbuj dodać raise(SIGTRAP) w swojej main(), należy uruchomić proces w gdb, a następnie ustawić punkt przerwania ty znowu chcesz po natrafi SIGTRAP.

5

Podczas kompilowania pliku .c, upewnij się użyć:

gcc filename.c -g 

gdb <binary name> 

Szukaj symboli debugowania obciążenie zrobić czy nie?

Jeśli nie:

gdb) symbol-file <path-of-symbol-file> 

można znaleźć plik symboli w katalogu obj

+0

Czytanie symboli z .libs/slim ... done.pokazał tę wiadomość, myślę, że ładowanie symboli jest w porządku. – arslan

+0

możesz opublikować migawkę całego problemu, czyli jak kompilujesz –

+0

Dodałem informację o kompilacji, przejrzyj – arslan

1

Kiedy trzeba użyć GDB, wpisz następujące polecenie w wierszu poleceń

gcc -g -o outputfile sourcefile.c 

Teraz wpisz

gdb -tui outputfile 

, a następnie wprowadź polecenie przerwania:

+0

plik wyjściowy gdb -tui. Uruchomiłem to i otworzył obszar na górze terminala, ma komunikat "brak dostępnego źródła". potem próbowałem ustawić break, i taki sam "No source file named main.c." wiadomość. – arslan

+0

proszę zobaczyć moje polecenia kompilacji, czy jest jakiś problem? – arslan

2

Napotkałem też podobny problem wcześniej. Właśnie usunąłem folder .metadata i ponownie zaimportowałem dany projekt, który działa dobrze.