2015-02-05 2 views
1

gdb에서 애플리케이션을 실행하려고하는데 debbuger에 문제가있는 것 같습니다. 내가 시도한 모든 방법으로 공유 라이브러리를로드 할 수 없습니다.gdb에서 공유 라이브러리를로드 할 수 없습니다

도서관은 /usr/local/lib64에 저장되고 환경은 괜찮 : 나는 gdb에 appllication을 실행하면

echo $LD_LIBRARY_PATH 
/usr/local/lib64:/home/user/lib 

는 다음이 발생합니다

(gdb) set solib-search-path /usr/local/lib64 
(gdb) show solib-search-path The search path for loading non-absolute 
shared library symbol files is /usr/local/lib64. 
(gdb) info sharedlibrary No shared libraries loaded at this time. 

내가 디버깅 할 수있는 중단 점을 설정할 수 없습니다 내 응용 프로그램하지만 동시에 응용 프로그램은 gdb에서 확인을 실행하고 디버그 기호는 바이너리에서 읽는 중입니다!

문제는 사용 권한과 관련되어 있지만 정확하게 어디에 있는지는 알 수 없습니다.

오해를 피하기 위해 응용 프로그램이 제대로 작동하고 공유 라이브러리에 액세스하는 데 문제가 없음을 알아야합니다. 내가 강남 appllication을 실행하면

답변

3

, 다음과 같은 상황이 발생합니다

아직 실제로 실행 응용 프로그램을, 그래서 "이 시간에로드 된 공유 라이브러리는"정확하고 예상된다 없습니다.

실제로 GDB run 명령을 실행해야합니다.

업데이트 : 실행 명령을 실행할 수 있으며, 그 이상한 일이

.

아니요, 이상한 일이 아닙니다. 문제가 없으며 모든 것이 예상대로 작동합니다.

실제 응용 프로그램에서 사용하는 공유 라이브러리에 중단 점을 설정할 수 없다고 생각합니다. 문제가 있음을 에 대한 해결책은이 작업을 수행합니다 :

gdb /path/to/app 
(gdb) start 

# Application stops at main. 
# You can now set any breakpoint you want. 
(gdb) break foo.c:123 
+0

나는 실행 명령을 실행할 수 있으며, 그 이상한 일이다. – mortalland

+0

@mortalland 당신은 진짜 문제가 무엇인지 설명하는 일을 잘하고 있지 않습니다. 내 현재 추측에 맞게 업데이트되었습니다. –

+0

예, @EmployedRussian이 말했듯이 실행 명령을 실행하는 것이 이상한 일은 아닙니다. 응용 프로그램을 실행하고 실행할 때 공유 라이브러리 (.so 파일)가로드됩니다. –

관련 문제