내가 gdb를 사용하여이 시작 소스를 찾을 수없는 (작업 디렉토리 인/홈/레온/개발/테스트// 원자) :GDB는
gdb ./bin/lin64/httpress
가 그럼 난 소스 파일과 디렉토리를 추가하고 나를 이해 : 내 바이너리를 실행하면
Source directories searched: /home/leon/Develop/tests/atomic/third/http_parser:/home/leon/Develop/tests/atomic/src/tools:$cdir:$cwd
은, GDB는 segfault의 일이 내 소스 코드에 라인을 인식하지 못합니다. gdb 용 소스 파일을 설정하는 방법은 무엇입니까?
gcc -D_AMD64_ -D_LIN_ -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -m64 -march=core2 -O2 -Wall -I. -I src/include -I src/lib/zlib/ -I src/lib/otg -I third/openssl/include/ -I src/lib/otg/Tools/HostTime/Interfaces/ -I src/lib/otg/Tools/OpenToolsGate/Guest/Interfaces/ -I src/lib/otg/Tools/OpenToolsGate/Guest/Cross -I src/lib/otg/Tools/OpenToolsGate/Common/Interfaces/ -o bin/lin64/httpress -std=c99 -lpthread -lev -lgnutls -O2 -s -DWITH_SSL -Wno-strict-aliasing \
-I /usr/include/libev src/tools/httpress.c -I third/http_parser/ third/http_parser/http_parser.c
좋아, 내가 만든 한 몇 가지 변화 :이 경우
gcc -g -ggdb -D_AMD64_ -D_LIN_ -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -m64 -march=core2 -Wall -I. -I src/include -I src/lib/zlib/ -I src/lib/otg -I third/openssl/include/ -I src/lib/otg/Tools/HostTime/Interfaces/ -I src/lib/otg/Tools/OpenToolsGate/Guest/Interfaces/ -I src/lib/otg/Tools/OpenToolsGate/Guest/Cross -I src/lib/otg/Tools/OpenToolsGate/Common/Interfaces/ -o bin/lin64/httpress -std=c99 -lpthread -lev -lgnutls -s -DWITH_SSL -Wno-strict-aliasing \
-I /usr/include/libev src/tools/httpress.c -I third/http_parser/ third/http_parser/http_parser.c
여전히 이진 심볼을 찾을 수없는
이 프로그램은 GCC로 컴파일 . 그러나 gcc 호출에서 -s 옵션을 제거하면.
Reading symbols from /home/leon/Develop/tests/atomic/bin/lin64/httpress...done.
을하지만 디버거는 여전히 말한다 : 그것은 기록
(gdb) info source
No current source file.
을 ... 나는 그에게 소스와 디렉토리를 가리 킵니다 후.
프로그램을 실행하지 않는 경우,'info source'가'No current source file'을 반환한다는 것이 정상입니다.'정보 출처'를 사용해 보셨습니까? – jcm