라이브러리 로딩을 어떻게 추적합니까?


16

시스템에 설치된 libboost 1.67에 연결된 라이브러리에 의존하는 프로그램이 있습니다. 시작할 때 libboost_system.so.1.58존재하지 않는 오류가 있습니다. LD_PRELOADLD_LIBRARY_PATH해제합니다.

lddtree실행은이 라이브러리를 종속성으로 표시하지 않지만 ldd수행합니다.

라이브러리가 필요한 곳에서 어떻게 추적 할 수 있습니까?

답변:


16

GNU 시스템 인 경우 다음을 사용하여 응용 프로그램을 실행하십시오.

LD_DEBUG=libs your-application

LD_DEBUG=help추가 옵션 또는을 참조하십시오 man ld.so.


tcsh에서 LD_DEBUG = libs python3.6을 시도하면 LD_DEBUG 명령을 찾을 수 없습니다. tcsh 대안은 무엇입니까?
gansub

1
@gansub envtcsh 에서 명령 접두사
Stéphane Chazelas

6

프로그램이 dlopen ()을 사용하여 libboost_system을 수동으로로드하는 경우 ltrace 를 사용하여 dlopen ()을 호출하는지 여부를 확인하고 gdb가 dlopen ()을 호출 할 때 중단 점을 설정하는 위치를 찾을 수 있습니다. 스택 역 추적 생성 ( latrace 도 참조하십시오 .)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.