2016-11-19 1 views
0

모두. gdb에서 기호 테이블을 찾을 수없는 이유는 무엇입니까?

나는 핵심 파일과 GDB를 사용 ceph의 문제를 해결하기 위해 노력하고있어. ceph-따라서 debuginfo에서 다음과 같은 출력에 따르면, GDB가 성공적으로로드했습니다해야 디버그 기호 : I 스택을 추적하는 "BT"사용 그러나

Reading symbols from /usr/bin/ceph-osd...Reading symbols from /usr/lib/debug/usr/bin/ceph-osd.debug...done. 

, 여전히 심볼 테이블을 찾을 수 없습니다 :

#0 0x000000393da0f65b in ??() 
No symbol table info available. 
#1 0x0000000000a51636 in install_standard_sighandlers() at global/signal_handler.cc:121 
No locals. 
#2 0x00007fc7a77f9ed0 in ??() 
No symbol table info available. 
#3 0x00007fc7a77f9e10 in ??() 
No symbol table info available. 
#4 0x00007fc7a77f9b90 in ??() 
No symbol table info available. 
#5 0x00007fc66d3142e0 in ??() 
No symbol table info available. 
#6 0x00007fc7fac64100 in ??() 
No symbol table info available. 
#7 0x0000003900000000 in ??() 
No symbol table info available. 
#8 0x0000000000a51155 in SignalHandler::unregister_handler (this=0x1105440, signum=<value optimized out>, handler=<value optimized out>) at global/signal_handler.cc:317 
No locals. 
#9 0x000000393eabcc33 in ??() 
No symbol table info available. 
#10 0x000000393eabcd2e in ??() 
No symbol table info available. 

왜 이런 일이 무엇입니까?

추신 :

BFD: Warning: /home/xuxuehan/online_problems.2016-11-19.7-01/core-ceph-osd-6-32337-32337-19906-1479510049 is truncated: expected core file size >= 8372899840, found: 7439335424 

이이 GDB는 심볼 테이블을 발견하지의 원인이 될 수 : gdb를 실행하기 시작했을 때, 그것은 다음과 같은 경고 메시지가?

+0

'-g' 또는 이와 유사한 것으로 컴파일하고 있습니까? –

+0

아니요, 실행 파일을 -g로 컴파일하지 않았지만 디버그 정보를 빌드했습니다.이 디버그 정보는 gdb가 실행될 때로드됩니다. – Rainman1985

+0

이 디버그 정보를 어떻게 정확하게 빌드합니까? – woockashek

답변

1

이 공유 라이브러리에서 기호 수 있습니다.

시작 :

ldd your_binary 

하고 사용하고 무엇을 공유 객체를 참조하십시오. 그런 다음 디버그 기호를 다운로드하십시오.

+0

감사와 함께 내장 내가 -g와 소스를 구축하는 것보다 알고 다른 방법, -ggdb 등 – Rainman1985

+0

필자도 아는 한 컴파일과 환경 사이의 libstdC++ 버전이 일치하지 않기 때문일 수 있습니다. – woockashek

+0

코어 파일을 생성 한 ceph-osd를 컴파일하는 데 사용 된 libstdC++의 버전을 감지하는 방법이 있습니까? 코어 파일을 생성 한 실행 파일이 오래 전에 지어진 이후 당신이 건물에 대해 동일한 환경을 사용하고 실행하는 경우, 나는 내가 그것을 구축 – Rainman1985

관련 문제