라이브러리 로딩을 어떻게 추적합니까? 연결된 라이브러리에 의존하는 프로그램이

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

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

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



답변

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

LD_DEBUG=libs your-application

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


답변

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


답변