문제

여기에 누군가가 최근 AIX 버전에 LD_PRELOAD와 유사한 것이 있는지 말해 줄 수 있습니까? 보다 구체적으로 테스트 목적으로 바이너리에서 시간으로 전화를 가로 채고 일정한 시간을 반환해야합니다.

도움이 되었습니까?

해결책

AIX 5.3을 소개했습니다 LDR_PRELOAD (32 비트 프로그램의 경우) 및 LDR_PRELOAD64 (64 비트 프로그램의 경우) 변수. Linux에서 LD_PRELOAD와 유사합니다. 둘 다 콜론으로 구분 된 라이브러리 목록이며, 상징은 다른 무엇보다 나열된 공유 개체에서 선제 적으로로드됩니다.

예를 들어, 공유 객체가있는 경우 foo.so :

 LDR_PRELOAD=foo.so

아카이브를 사용하는 경우 AIX 스타일을 사용하여 아카이브 내에서 개체를 지정하십시오.

 LDR_PRELOAD="bar.a(shr.so)"

결장으로 여러 항목을 분리합니다.

 LDR_PRELOAD="foo.so:bar.a(shr.so)"

다른 팁

AIX 5L은 LDR_PRELOAD 변수를 사용합니다.

내가 알고있는 것은 아닙니다. 우리가 한 가장 가까운 일 (Malloc/Free Debugging과 함께)은 다음과 같습니다.

  • 원하는 함수만으로 새 라이브러리 파일을 만듭니다 (원본과 동일).
  • 원본과 다른 디렉토리에 배치하십시오.
  • 라이브러리 파일에서 원본으로 의존성을 만듭니다.
  • LD_LIBRARY_PATH (또는 SHLIB_PATH?)를 변경하여 라이브러리를 검색 체인에 먼저 배치하십시오.

그렇게하면, 우리의 기능은 로더에 의해 먼저 픽업되었으며, 공급하지 않은 것은 원본에서 제공했습니다.

이것은 얼마 전입니다. AIX 5L은 Linux (따라서 L)와 훨씬 비슷해야하므로 필요한 것을 정확하게 수행 할 수 있습니다.

또는 소스가있는 경우 MyTime ()가있는 Time ()에 대한 호출을 munge하고 기능을 제공하십시오. 당신은 테스트가 아닙니다 바로 그거죠 동일한 소프트웨어이지만 이러한 종류의 최소 변화에 대한 차이는 중요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top