2009-10-19 21 views
17

Mam projekt aplikacji Eclipse CDT C++, który korzysta z biblioteki współdzielonej. Ta biblioteka jest skompilowana z informacjami debugowania, a jej źródło jest dostępne na właściwej ścieżce.Debugowanie za pomocą Eclipse CDT i GDB

Teraz próbuję debugować moją aplikację za pomocą Eclipse i GDB. Jeśli umieściłem breakpointy w kodzie źródłowym aplikacji, wszystko jest w porządku. Następnie otwieram plik źródłowy dołączonej biblioteki i umieszczam tam punkt przerwania. Podczas uruchamiania sesji debugowania ostrzegam, że "Brak pliku źródłowego o nazwie xxx.cpp w załadowanych symbolach" i wykonanie nie jest zatrzymywane w tym momencie. Jeśli wstawię ten sam punkt przerwania w tym samym pliku, gdy sesja debugowania jest już uruchomiona, wszystko działa poprawnie. Co jest nie tak?

Dzięki za pomoc.

Odpowiedz

7

znalazłem jeden temat, który może odpowiedzieć na to pytanie: Why does Eclipse CDT ignore breakpoints?

Możliwe, że próbujesz ustawić punkty przerwania w udostępnionej biblioteki nie został jeszcze załadowany. To nie będzie działać, dopóki biblioteka nie załaduje się. Nowszy gdb pozwala ustawić odroczone punkty przerwania, ale to nie musi (jeszcze) być obsługiwane przez CDT. Obejście problemu polega na tym, że ustawi punkt przerwania w miejscu, które jest dostępne od początku, aby uzyskać , gdy biblioteka współdzielona w pytaniu jest już załadowana. Następnie ustaw inny punkt przerwania w udostępnionej bibliotece . Teraz powinno działać. Jest to nieco nużące, ale zazwyczaj działa.

coud to być answear? Używam CDT v6.0.0.200906161748 i GDB v6.8

7

Miałem ten sam problem, próbując ustawić punkty przerwania w wtyczkach Qt (które są oparte na DLL systemu Windows, s).

Znalazłem tę dyskusję i rozwiązanie sprawdziło się idealnie, chociaż korzystam z nowszej wersji Eclipse, niż to, że brzmi jak ten sam problem.

http://www.eclipse.org/forums/index.php?t=msg&goto=555294&S=2aed4155e654e34cb2e84a6fb23de9bf#msg_555294

Zasadniczo, to jest użycie starszego protokołu gdb który obsługuje odroczonego punkty przerwania. Używając "Standardowy program uruchamiający proces" zamiast "GDB (DSF) Create Process Launcher" z Debug Configurations i otrzymuję teraz wszystkie moje punkty przerwania DLL.

Wersja: Helios Release Budowa id: 20100617-1415

CDT i GDB wersja 7.0.0.

Powodzenia!

Powiązane problemy