2017-05-13 14 views
0

Mozilla Firefox 실행 중에 "malloc, realloc, calloc 및 free"요청 된 작업을 가로채는 방법이 있습니까? 예를 들어, glibc를 사용하는 일부 응용 프로그램에서 메모리 할당 작업을 가로채는 LD_PRELOAD 접근 방식을 사용하고 싶습니다. 이러한 작업에 대한 추적을 만들고 싶습니다.Mozilla Firefox 웹 브라우저에서 동적 메모리 할당 호출 차단

가능한 경우 최신 버전의 Mozilla Firefox에서 사용하고 싶습니다. 예를 들어 :

최신 버전 : 당신은 그냥 추적 라이브러리 호출에 필요한 몇 가지 사소하지 않은 방법으로 그들을 차단하지 않을 경우 내가 아는 한 FIREFOX_AURORA_54

답변

0

, 당신은 ltrace을 사용할 수 있습니다 . 이 유틸리티에 익숙하지 않아서 필자의 예제가 정확하지 않을 수도있다.

ltrace -e malloc+free gcc처럼 실행하면 gcc에 의해 수행 된이 두 함수에 대한 호출을 추적합니다. 그러나 적어도 내 시스템에서이 간단한 방법은 파이어 폭스 작동하지 않습니다 : /usr/bin/firefox 실제 바이너리를 실행 단지 쉘 스크립트이기 때문에

$ ltrace -e malloc+free firefox 
"/usr/bin/firefox" is not an ELF file 

이 발생합니다.

$ ltrace -f -e malloc+free sh /usr/bin/firefox 

먼저, sh /usr/bin/firefox으로 스크립트를 실행 당신이 관심이 아니기 때문에 다음의 -f 옵션을 지정해야합니다 : 그래서 우리는 (물론, 당신이 추적하는 데 필요한 기능을 지정)과 같은 명령을 사용할 필요가 셸에 의해 수행되는 호출에서는 자식 프로세스에 의해 수행됩니다. PID를 사용하여 출력을 필터링해야합니다. 여기서는 전체 프로세스 트리에서 호출을 수행했기 때문입니다.

이 출력이 완벽하게 정확하지 않을 수 있음을 유의하시기 바랍니다 :

  • I 2013 아무것도에서 최신 이후 ltrace 릴리스는 크게 ltrace에 대해 알고하지 않는 동적 링커 변경 희망하지만, 잘 모르겠어요
  • 일부 경우 libc 함수 호출 fe malloc이면이 호출은 정적으로 수행 될 수 있습니다. 이 경우 당신은 아마 내가 더 라이브러리 호출이 모든
  • 등이 수행되지 않습니다 가정 alloca 같은 일부 기능의 출력
  • 에 표시되지 않습니다