2016-10-23 10 views
1

내가 사용 작동하지 우분투 14.04gdb가 sharedlibrady에서 libdl을로드하지 않는 이유는 무엇입니까? 및 heaptrack는

하는 heaptrack 쉘 스크립트 오류 메시지가 다음 내가 볼

gdb --batch-silent -n -iex="set auto-solib-add off" -p $pid \ 
    --eval-command="sharedlibrary libdl" \ 
    --eval-command="call (void) dlmopen(0x00, \"$LIBHEAPTRACK_INJECT\", 0x002)" \ 
    --eval-command="sharedlibrary libheaptrack_inject" \ 
    --eval-command="call (void) heaptrack_inject(\"$pipe\")" \ 
    --eval-command="detach" 

을 실행할 때 나는 내 실행중인 C++ 프로그램에서 메모리 누수를 감지 https://github.com/KDE/heaptrack를 사용해보십시오

No symbol "dlmopen" in current context. 
No symbol "heaptrack_inject" in current context. 

그리고 수동으로 gdb를 실행하는 경우

gdb -p XXX 
(gdb) sharedlibrary libdl 

내가 왜 GDB가 sharedlibrary 명령을 통해 libdl로드되지 않는 다른 오류 메시지가

No loaded shared libraries match the pattern `libdl'. 

를 볼 수 있지만 내 파일 시스템

# find/-name libdl*.so 
/usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.19.so 
/usr/lib/x86_64-linux-gnu/libdl.so 
/lib/x86_64-linux-gnu/libdl-2.19.so 

을에 libdl.so 존재?

답변

2

gdb가 sharedlibrary 명령에 대해 libdl을로드하지 않는 이유는 무엇입니까?

이 메시지 :

No loaded shared libraries match the pattern `libdl'. 

은 열등 (디버깅) 프로세스가 libdl에 연결하지 않는다는 것을 의미한다. 라이브러리가 모두 (gdb) info shared이고 그 중 libdl이 해당 라이브러리가 아님을 확인할 수 있습니다.

GDB는 자체적으로로드 된 라이브러리 세트를 수정하지 않습니다.

find/-name libdl*.so

무관입니다

. libdl.so은 존재하지만 모든 프로세스가 프로세스를로드한다는 것을 의미하지는 않습니다 (프로세스 이 아닙니다).