2014-04-19 1 views
2

나는 유사성 결합 프로그램을 작성했고 그것을 디버깅하려고하고있다. 그러나 gdb -q ./simjoiner을 입력하면 출력은 다음과 같습니다.GDB 자체의이 세분입니까?

./simjoiner...1에서 기호를 읽는 중입니다.

#34324 0x00000000004f28c5 in ??() 
#34325 0x000000000055efe9 in ??() 
#34326 0x000000000055ebd9 in ??() 
#34327 0x000000000055f0c4 in symbol_file_add() 
#34328 0x000000000055f125 in ??() 
#34329 0x000000000058472e in catch_command_errors_const() 
#34330 0x00000000005870ed in ??() 
#34331 0x00000000005845ca in catch_errors() 
#34332 0x0000000000587454 in gdb_main() 
#34333 0x000000000045375e in main() 

따라서 나는이 세그먼트 폴트가 GDB 자체가 아닌 내 프로그램에 의해 발생 생각 : 15939 세그먼트 오류 gdb를 -q ./simjoiner는

gdb --args gdb ./simjoiner를 사용하여, 나는 다음 역 추적을 얻을 수 있습니다. archlinux repo에서 gdb 7.7을 사용하고 있습니다.

나는 gcc 4.8.2와 clang 3.4 모두 내 프로그램을 컴파일하려고 시도했다. ~/.gdbinit도 삭제했지만 변경 사항은 없습니다. 그러나 -O2를 사용하여 컴파일하면 문제가 없습니다. 내 프로그램의 이전 버전을 컴파일하면 잘 작동합니다. 하지만 어떤 변경으로 인해이 세그먼트가 발생하는지 알지 못했습니다.

의견이 있으십니까? 잘못되었거나 GDB 버그로 인식되어야합니까? 감사!

p.s. 내 프로그램은 https://drive.google.com/file/d/0B9GlL8tebaU3eXdmVkN6WDR5Ykk/edit?usp=sharing에 있습니다. 시스템에 테스트하려면 make clean; make gdb을 입력하십시오.

+3

[버그보고] (http://www.sourceware.org/gdb/bugs/)를 GDB로 보내주십시오. – timrau

+0

프로그램이 오래 실행된다면 GDB를 실행 한 후에 GDB를 연결하면 어떤 프로세스가 충돌하는지 분명히 알 수 있습니다. –

+0

gdb 7.6.1로 다운 그레이드하면 문제가 해결됩니다. 이제 나는 그것이 버그라고 확신한다. – jiakai

답변

1

예. 이것은 gdb 버그입니다. 이것을 gdb 개발자에게보고 할 수 있습니다.