2017-12-18 9 views
1

현재 Vector 클래스 구현을 테스트하고 있으며 GDB를 사용하여 오류가 발생한 위치를 확인하려고합니다.스택 추적 GDB에 함수 이름이 없지만 LLDB에 나타납니다.

| => gdb ./a.out 
Reading symbols from ./a.out...Reading symbols from /Users/prog/Desktop/Generics/a.out.dSYM/Contents/Resources/DWARF/a.out...done. 
done. 
(gdb) r 
Starting program: /Users/prog/Desktop/Generics/a.out 
[New Thread 0x2703 of process 56984] 
warning: unhandled dyld version (15) 

Thread 2 received signal SIGSEGV, Segmentation fault. 
0x00007fff65d97fe6 in ??() 
(gdb) bt 
#0 0x00007fff65d97fe6 in ??() 
#1 0x00007ffeefbff640 in ??() 
#2 0x00007fff65be4139 in ??() 
#3 0x00007ffeefbff660 in ??() 
#4 0x0000000000000000 in ??() 

enter image description here 특히되지 않습니다 :

나는 내가 (충돌 및 스택 추적을 인쇄하려고 후) 출력으로 다음 얻을, 다음 gcc -ggdb Vector.c TestVector.c 컴파일, 이후 GDB에서 실행

역 추적으로 인해 오류가 어디에서 발생했는지 파악하는 데 도움이됩니다.이 오류는 내 함수가 실행되는 절대 메모리 위치 만 보여줍니다.

내가 LLDB에서 동일한 작업을 수행

, 출력은 조금 더 명확 : 이 enter image description here

내 질문은, 왜 GDB는 사이 컴파일 설정을 변경하지 (하지 나에도 불구하고 나에게 정확한 정보와 lldb를 제공하지 않습니다됩니다 두 개의 디버깅 세션) 어떻게 해결할 수 있습니까?

도움이된다면 Mac OS X, High Sierra를 운영체제로 사용하고 있습니다.

+0

이것은 알려진 [Mac OS의 gdb 버그] (https://sourceware.org/bugzilla/show_bug.cgi?id=20981)입니다. – ks1322

답변

3

gdb는 dyld가 프로세스에로드하는 공유 라이브러리를 인식하지 못합니다. gdb 출력 상단에 "unhandled dyld version (15)"이 표시됩니다. MacOS에서 제대로 작동하려면 gdb를 업데이트해야합니다. 나는 요즘 gdb의 macOS 포트를 얼마나 적극적으로 관리했는지 모르겠습니다.