Google 시스템에는 오픈 소스 라이브러리가 있습니다. 까다로운 점은 라이브러리의 복사본이 두 개 있습니다. 하나는 자체 수정 한 것이고 다른 하나는 원본입니다. 두 복사본 모두 소스 트리에 있지만 사용자 정의 된 복사본은 런타임에 호출해야하며 원래 복사본은 빌드시 다른 용도로 사용되어야합니다.동적으로로드되는 라이브러리를 추적하는 방법
이제는 시스템 업그레이드 중에 사용자 지정 파일이 원래 파일에서 숨겨져있는 것 같습니다. 시스템의 복잡성 때문에 일부 추적을하기 위해 소스 코드를 수정하는 것이 가능하지만 어색합니다. 단서를 얻기 위해 최상위 레벨 라이브러리를 objdump 할 수만 있다면 생각합니다.
여기에 자세한 내용은 다음과 같습니다
1) The customization one and the original one have the same source file names
2) Their library names are same
3) The customization is some implementation change at deep within; so it is
invisible from outside
4) The 2 libraries are at different sub directory trees
가 동적으로 링크되어 있기 때문에, 실제로 objdump를 나에게 어떤 차이를 알 수 있습니다 의심한다. 그러나 어떤 제안도 감사합니다!
gdb 솔루션은 내가 찾고있는 것과 가장 유사합니다. 질문 : 기능을 한 단계 씩 진행 한 후에 내가 현재 어느 라이브러리에 있는지 어떻게 알 수 있습니까? "show sharedlib"은 많은 라이브러리가 보관되어 있기 때문에 작동하지 않습니다. (어쨌든 라이브러리가 보이지 않습니다.) –
gdb에 대해 많이 알지 못합니다. 그리고 BTW도 lsof를 사용할 수 있습니다. lsof -Pn | grep yourappname | grep "\ .so" – Peter