2013-05-26 50 views
6

Niedawno zainstalowano GCC 4.7.3 i GDB 7.6 na moim systemie OS X 10.7 poprzez DarwinPorts móc skompilować kod C++ 11. Nie mogę użyć stworzonego przez Apple języka ++ i gdb, ponieważ nie pozwala mi on poprawnie debugować standardowego kodu biblioteki szablonów (na przykład, jeśli usuniemy z listy iterator, program ulega awarii).gcc 4.7.3 i gdb 7.6 na Mac - dziwne problemy krokowe

Teraz, dzięki nowej kombinacji GCC/GDB, mam pewne dziwne problemy z wkraczaniem w funkcje. Weź ten minimalny przykład:

#include <stdio.h> 

class A { 
public: 
    virtual void testMethod() { 
     printf("test in A\n"); 
    } 
}; 

void test(A &a) { 
    printf("asdf\n"); 
    a.testMethod(); // here, stepping works with -std=c++11 
} 

int main() { 
    A a; 
    a.testMethod(); 
    test(a); 
    a.testMethod(); 
    return 0; 
} 

Gdybym skompilować kod z g++ -O0 -ggdb test.cpp, GDB nie wkroczyć A::testMethod w ogóle. Mogę ustawić punkt przerwania, określając linię kodu wewnątrz A::testMethod, ale nie określając nazwy metody (b A::testMethod()).

Co dziwniejsze, jeśli skompiluję z g++ -O0 -ggdb -std=c++11 test.cpp, GDB przechodzi do metody testMethod, jeśli jest wywołana z void test(). Zasadniczo krokowanie nadal nie działa. Jednak teraz mogę ustawić punkt przerwania, podając tylko nazwę metody.

Ponadto, gdy tylko uruchomię program w GDB, otrzymuję ostrzeżenia GDB, jak opisano w powiązanych pytaniach. Te ostrzeżenia pojawiają się niezależnie od tego, czy określam -std=c++11, czy nie.

warning: Could not open OSO archive file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/./gcc/libgcc_eh.a" 
warning: Could not open OSO archive file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a" 
warning: Could not open OSO archive file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../src/c++11/.libs/libc++11convenience.a" 
warning: Could not open OSO archive file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../src/c++98/.libs/libc++98convenience.a" 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility-atomic-c++0x.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility-c++0x.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility-debug_list-2.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility-debug_list.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility-thread-c++0x.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc49/libstdcxx-devel/work/build/x86_64-apple-darwin11/libstdc++-v3/src/.libs/compatibility.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/_muldi3_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/addtf3_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/darwin-64_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/divtf3_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/emutls_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/enable-execute-stack_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/eqtf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/extenddftf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/extendsftf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/extendxftf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixtfdi_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixtfsi_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixtfti_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixunstfdi_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixunstfsi_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/fixunstfti_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floatditf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floatsitf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floattitf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floatunditf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floatunsitf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/floatuntitf_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/getf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/letf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/multf3_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/negtf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/subtf3_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/trunctfdf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/trunctfsf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/trunctfxf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/unordtf2_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/unwind-c_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/unwind-dw2-fde-darwin_s.o': can't open to read symbols: No such file or directory. 
warning: `/opt/local/var/macports/build/_opt_mports_dports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libgcc/unwind-dw2_s.o': can't open to read symbols: No such file or directory. 

Zdaję sobie sprawę z następujących pytań: Debugging Problems, Weird GDB messages, GDB error message, GDB fails on Mountain Lion, mimo to nie może mi pomóc. Podawanie wartości -gdwarf-2 -gstrict-dwarf również nie pomaga.

-EDIT- Wyjście nm jest taka sama w obu przypadkach:

0000000100001068 s GCC_except_table0 
00000001000010c0 S _NXArgc 
00000001000010c8 S _NXArgv 
       U __Unwind_Resume 
0000000100000e34 T __Z4testR1A 
0000000100000eae T __ZN1A10testMethodEv 
00000001000010b0 S __ZTI1A 
0000000100000f1d S __ZTS1A 
0000000100001090 S __ZTV1A 
       U __ZTVN10__cxxabiv117__class_type_infoE 
       U ___gxx_personality_v0 
00000001000010d8 S ___progname 
0000000100000000 T __mh_execute_header 
00000001000010d0 S _environ 
       U _exit 
0000000100000e61 T _main 
       U _puts 
0000000100001000 s _pvars 
       U dyld_stub_binder 
0000000100000df8 T start 

Czy ktoś udało się uzyskać GCC 4.7, a niektóre odpowiedni debugger działa na OS X Lion?

+0

znalazłeś rozwiązanie? Występują bardzo podobne problemy (http://stackoverflow.com/questions/22581645/gdb-7-7-does-not-step-in-on-on-x-mavericks-w-gcc4-7-3-macports) – Denis

+0

Nie, przepraszam. W końcu się poddałem. – Entropia

Odpowiedz

0

Próbowałem kompilacji w ten sposób .... Działa dobrze ... Czy możesz po prostu spróbować z opcją -g sam?

Np .: g ++ -g test.cpp -o test

+0

Niestety, to nie pomaga. Wynik jest taki sam, jak przy kompilacji z opcją -ggdb. Jak zainstalowałeś GCC/GDB? – Entropia

+0

Przykro mi .... Próbowałem kodu w GCC 4.5.3 dla CYGWIN. czy próbowałeś polecenia nm w pliku binarnym, aby sprawdzić, czy symbole istnieją? –

+2

Dodałem wyjście "nm" do pytania. Nie jestem zaznajomiony z 'nm', jednak myślę, że symbole są obecne. Przynajmniej karta GDB - je uzupełnia. Ponadto, nie sądzę, że jest to ogólny problem GCC/GDB, bardziej problem na Mac. W systemie Ubuntu wszystko działa poprawnie. – Entropia