Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

dmn

[Code::Blocks, C++] użycie debuggera

Polecane posty

Czy jest ktoś w stanie podpowiedzieć pare rzeczy związanych z debuggerem wspomnianego w temacie edytora?

Mianowicie:

1. Przede wszystkim czy da się w jakikolwiek sposób (poza resetem kompa ;) pozamykać martwe okna konsoli otwierane przez debugger, które pozostają po włączeniu opcji 'step into' (ale nie tylko, poza tym w Devie mialem to samo, a w googlach nie znalazłem rozwiązania)

nie da się ich zamknąć nawet Menedżerem zadań (WinXP)

2. Do poprawnego działania debuggera należy w Projekt-->Build options zaznaczyć

produce debugging symbols [-g]

oraz

enable all compiler warnings [-Wextra]

i ewentualnie odznaczyć [-s]

teraz pytanie: Czy da się tak skonfigurować Code::blocks by każdy nowy projekt miał juz domyślnie owe ustawienia zamiast za kazdym razem odhaczac?

(w Global settings zaznaczyłem tak jak trzeba, mimo to w nowych projektach nadal w Build options brakuje odpowiednich zaznaczeń)

3. Debugger działa tu tylko w całych projektach, czy może da się odpalać go w pojedynczych jednoplikowych programach (do nauki byłoby to wygodniejsze)

Link do komentarza
Udostępnij na innych stronach

Nie wiem jak to tam jest w tym C::B. Jestem jednak przekonany, że domyślnie każdy projekt ma dwa "tryby" Debug i Release. Debug powinien zawierać symbole do debugowania, release nie.

Wextra jest zbędne do debugowania. Przydaje się, bo kompilator generuje więcej ostrzeżeń, natomiast na samo debugowanie nie ma to wpływu.

Debugger możesz odpalić z dowolnym programem. Nie powinno mieć znaczenia, czy jest to program zbudowany z jednego pliku, czy z miliona. Natomiast sam C::B pewnie potrzebuje mieć plik projektu z konfiguracją inaczej nie potrafi odpowiednio zbudować programu i uruchomić debuggera.

EDIT:

Skoro się dopiero się uczysz to może warto ściągnąć sobie Visual Studio Express Edition 2008 lub 2010. Niestety tylko pod Windows.

Link do komentarza
Udostępnij na innych stronach

faktycznie , już po samej nazwie trybu Debug powinienem się domyślić że tu może coś być co potrzebuję, ale widać potrzebowałem pokazania palcem jak krowie przy rowie ;]

Pytałem o te projekty bo dotychczas pracowałem na starym Devie, a tam nie trzeba było projektów tworzyć. Ale chciałem pójść z duchem czasu, bo jednak zacząłem odczuwać, to że nie jest rozwijany od paru lat. C::B mi sie spodobał i jednak przy nim pozostane bo zacząłem go lubić ;D

Tylko czasem te okna konsoli podczas debugowania nie chcą sie zamknąć ;)

a to Visual Studio co piszesz to też freeware'owe jest jak wyżej wymienione?

Link do komentarza
Udostępnij na innych stronach

IDE to tylko narzędzie. Radzę się nadmiernie nie przywiązywać do jednego, dopóki nie poznasz ich większej liczby.

Ja osobiście preferuję Eclipse + CDT i Visual Studio. Pierwszy dla mnie jest świetny, drugi ma najlepszy debugger spośród wszystkich IDE dla C/C++ z jakimi się spotkałem.

Link do komentarza
Udostępnij na innych stronach

Eclipse zbyt wiele konfigurowania wymagał jak na moją małą głowę ;>

M.in. budowania samemu makefile'a... albo coś źle poinstalowałem, bo nie mialem do wyboru (przy tworzeniu) opcji executable file, który pozwala na automatyczne generowanie makefile'a, z tego co zrozumiałem szperając po necie...

zainstalowałem sobie VS Express 2010 jak radziliście i chcialem obadać ten zachwalany debugger ktory on ma - a wiec prosty 'hello world' napisałem i kliknąłem 'start debugging'.

niby OK, na konsoli pokazał napis, ale zakończył sam, nie zamykając konsoli -teraz znow nie mozna jej zamknąć - i wywalił coś o nieznanym mi skrócie - PDB:

'test_VS.exe': Loaded 'C:\Documents and Settings\Juzer\Moje dokumenty\c++\test_VS\test_VS\Debug\test_VS.exe', Symbols loaded.
'test_VS.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\msvcp100d.dll', Symbols loaded.
'test_VS.exe': Loaded 'C:\WINDOWS\system32\msvcr100d.dll', Symbols loaded.
'test_VS.exe': Loaded 'C:\WINDOWS\system32\guard32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\user32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\secur32.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\version.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\fltlib.dll', Cannot find or open the PDB file
'test_VS.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', Cannot find or open the PDB file
The program '[4944] test_VS.exe: Native' has exited with code 0 (0x0).

jak daje 'step into' to mam szanse przerwać debuggowanie tym kwadratem (stop) - wtedy pozbędę sie aktualnej konsoli włączonej przez debugger, ale jak pozbyć się tych pozostałych, co mi zalegają teraz w systemie po zakończonym odpluskwianiu? Nie macie takich problemów z tym? ;p

Czyżby jedynym wyjsciem było stopowanie debuggera przed samoistnym zakonczeniem? ;-)

A tak poza tym to rzeczywiście VS prezentuje sie całkiem przyjaźnie ;]

EDIT:

juz rozszyfrowałem skrót PDB - program debug database ;]

ale nie wiem czemu on ma z tym problem ;>

Link do komentarza
Udostępnij na innych stronach

Nie mam pojęcia czemu nie zamykają się te okienka. Z reguły się tak nie dzieje. Oznacza to, że z jakiegoś powodu system nie dostaje eventa o zamknięciu okna. Mi takie, rzeczy zdarzają się przy debugowaniu procesu, który instaluje sterownik systemu plików, montuje taki system plików, a potem kończy się gwałtownie w wyniku zabicia procesu przez debugger.

Przy zwykłym hello world, raczej nie powinno się tak dziać.

Tych okienek raczej nie da się zamknąć. W moim przypadku proces od dawna nie istnieje, więc nie da się tego tak po prostu zabić. Być może dałoby się jakoś przejrzeć listę okien w systemie i przesłać samodzielnie odpowiednią wiadomość o zamknięciu. Jest szansa, że procedura obsługi terminala jest wbudowana w system i samo usunięcie procesu nie wyładuje z pamięci tej procedury.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...