2012-05-14 3 views
0

내가 메시지의 종류가 : 어떻게 MacPorts를 가진GDB 오류 메시지 (MacPorts의에서) (GCC 4.7) 내가 GDB를 시작할 때

$ gdb a.out 
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Thu Nov 3 21:59:02 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries . 
warning: Could not find object file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a(array_type_info.o)" - no debug information available for "../../../../gcc-4.7.0/libstdc++-v3/libsupc++/array_type_info.cc". 


warning: Could not find object file "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_gcc47/gcc47/work/build/x86_64-apple-darwin11/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a(bad_alloc.o)" - no debug information available for "../../../../gcc-4.7.0/libstdc++-v3/libsupc++/bad_alloc.cc". 

내가 다시 된 libstdc를 가져올 필요가 보인다 ++하지만?

+0

GCC의 최신 버전과 함께 GDB 7을 사용해야합니다 (http://stackoverflow.com/a/10657175/981959 참조). –

답변

0

http://gcc.gnu.org/gcc-4.5/changes.html

GCC 지금 에필로그에 대해서도 언 와인드 정보를 생성 말한다. GCC에 의해 생성 된 DWARF debuginfo는 이전보다 DWARF3의 많은 기능과 일부 DWARF4 기능을 사용합니다. 7.0 이전의 GDB는 이들 중 하나를 처리 할 수 ​​없으므로 GCC 4.5 생성 바이너리 또는 라이브러리를 디버깅하려면 GDB 7.0 이상이 필요합니다. -gdwarf-3 -gstrict-dwarf 옵션을 사용하여 DWARF4 기능을 사용하지 않도록 설정하거나 -gdwarf-2 -gstrict-dwarf을 사용하여 GCC를 DWARF2로만 제한 할 수 있지만 unwind 정보가 방출 될 때마다 에필로그 unwind 정보가 무조건 내보내집니다.

그래서 macports에 최신 GDB가 있는지 확인해야합니다.

1

이것은 Apple에서 Xcode의 일부로 설치 한 특수 Unix 환경으로 인해 발생하는 몇 가지 문제 중 하나입니다. Xcode가 설치 한 것보다 더 최신 버전의 gcc가 필요하다면 최신 버전의 gdb도 설치해야합니다. 그렇지 않으면 위에서 설명한 문제가 발생할 것입니다. 또한 환경이 실제로 기본 Xcode 버전이 아닌 macport 버전을 호출하는지 확인해야합니다.

macports에서 gcc를 설치하면 'gcc'명령이 macports가 설치 한 gcc 버전을 호출하지 않습니다. 비슷하게, 'gdb'는 macport에 의해 설치된 gdb 버전을 호출하지 않습니다. macports가 설치 한 버전은 '/opt/local/bin/gcc-mp-4.6'및 '/ opt/local/ggdb'또는 gcc의 버전 번호에 따라 비슷한 경로가 있습니다. 'gdb'가 아니라 'ggdb'입니다.

한 가지 해결책은 전체 경로를 지정하여 항상 올바른 버전을 항상 호출하는 것입니다. 또 다른 방법은 기본 gcc와 gdb 위치를 macports 버전의 링크로 바꾸는 것입니다 (Xcode에 문제가 발생할 수 있음). 기본 위치는 '/ usr/local/bin/gcc'및 '/ usr/bin/gdb'입니다. 기본 bash 쉘은 경로 설정에 관계없이 해당 위치를 볼 것입니다.