, 당신은 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
같은 일부 기능의 출력
- 에 표시되지 않습니다