나는 유사성 결합 프로그램을 작성했고 그것을 디버깅하려고하고있다. 그러나 gdb -q ./simjoiner
을 입력하면 출력은 다음과 같습니다.GDB 자체의이 세분입니까?
./simjoiner...1에서 기호를 읽는 중입니다.
따라서 나는이 세그먼트 폴트가 GDB 자체가 아닌 내 프로그램에 의해 발생 생각 : 15939 세그먼트 오류 gdb를 -q ./simjoiner는#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 --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
을 입력하십시오.
[버그보고] (http://www.sourceware.org/gdb/bugs/)를 GDB로 보내주십시오. – timrau
프로그램이 오래 실행된다면 GDB를 실행 한 후에 GDB를 연결하면 어떤 프로세스가 충돌하는지 분명히 알 수 있습니다. –
gdb 7.6.1로 다운 그레이드하면 문제가 해결됩니다. 이제 나는 그것이 버그라고 확신한다. – jiakai