2014-10-21 24 views
10

Próbuję debugować projekt C++ w Codeblocks, ale nie zatrzymuje się w punktach przerwania. Czytałem inne odpowiedzi i próbowaliśmy następujące rzeczy do tej pory:Codeblocks nie zatrzymuje się w punktach przerwania.

  1. (Build Options > Compiler Settings) Produce debugging symbols jest zaznaczone, strip all symbols jest zaznaczona.
  2. Brak spacji/wartości innych niż ascii w ścieżce do pliku.
  3. Uruchamianie wersji debugowania.
  4. Debugger (Settings > Compiler > Toolchain Executables) ustawiony GDB/CDB Debugger:Default
  5. wykonywalne ścieżki w (Settings > Debugger > GDB/CDB Debugger:Default) jest C:\MinGW\bin\gdb.exe.

Nadal nie zatrzymuje się w punktach przerwania, a dziennik debugowania wspomina, że ​​nie znaleziono żadnych symboli debugowania Czego tu mi brakuje?

+0

Należy również użyć optymalizacji -O0 (lub może -O1). Sprawdź, czy funkcja jest wywoływana lub wywoływana jest funkcja wywołująca twoją funkcję. Linker może wymazać cały nieużywany kod. – j123b567

+0

@ j123b567: Dzięki za sugestię. Próbowałem, ale dostałem to - "Ostrzeżenie o kompilatorze: Masz włączone symbole debugowania. To nie jest dobra rzecz podczas optymalizacji." Ponadto narzędzie Codeblocks wciąż ignoruje punkty przerwania. – Stormbringer

+0

Czy możesz przejść do swojej funkcji, klikając "krok" od początku wykonywania? Czy możesz podać fragment kodu i linię, którą chcesz przerwać? – j123b567

Odpowiedz

13

Podczas próby naprawienia tego, natknąłem się na wiele podobnych pytań, w których CodeBlocks ignoruje punkty przerwania podczas debugowania, więc tutaj znajdują się poprawki, które do tej pory znalazłem.

1. Oczyść i odbuduj.
2. Upewnij się, że (Opcje budowy> Ustawienia kompilatora) Generowanie symboli debugowania jest zaznaczone, usunięcie wszystkich symboli jest odznaczone. Upewnij się, że odbywa się to w ustawieniach globalnych ORAZ w ustawieniach projektu. Naprawiono to dla mnie.
3.Sprawdź, aby w ścieżce pliku projektu nie było spacji/wartości innych niż ASCII.
4.Sprawdź, czy używasz wersji debugowania, a nie wydania. Plik wykonywalny z wersji Release będzie \ bin \ Release, a plik wykonywalny z wersji Debug będzie w \ bin \ Debug.
5. Sprawdź, czy Debugger w (Ustawienia> Kompilator> Pliki wykonywalne Toolchain) jest ustawiony na GDB/CDB Debugger: Domyślny.
6. Sprawdź, czy ścieżka do pliku (Ustawienia> Debugger> GDB/CDB Debugger: Default) jest poprawną ścieżką gdb jak (C: \ MinGW \ bin \ gdb.exe).
7.Update Codeblocks (ostatnia deska ratunku).
Proszę dodać w komentarzach cokolwiek innego, co zadziałało.

+0

Moim problemem jest to, że debugger faktycznie zatrzymuje się w punkcie przerwania, ale C :: B wciąż myśli, że program jest uruchomiony, więc nie zatrzymuje się. Czy masz jakieś rozwiązanie? – Calmarius

2

miałem ten problem też jednak, że to dlatego, dawno bym ustawić

> Ustawienia> Debugger GDB/CDB Debugger> Default> Polecenia Debugger inicjalizacji

do

"ustaw podrzędny tryb potomny"

, więc GDB faktycznie debugował inny program.

0

Jedyną rzeczą, która pracowała dla mnie:

ścieżka ze spacjami

Wartości graniczne nie może działać, jeśli ścieżka/folder został umieszczony projekt zawiera spacje lub inne znaki specjalne. Aby być bezpiecznym, używaj angielskich liter, cyfr i "_".

Źródło: Debugging with Code::Blocks

Ponadto można sprawdzić menu: Build-> Wybierz target-> Debug

0

Dla mnie rzeczą, która odrobiła było, aby usunąć plik main.o, który jest zawarty w obj/Debug.

Mam nadzieję, że komuś pomaga.

Powiązane problemy