특정 시스템콜을 어떤 함수가 불렀는지 알 수 있는 툴이나 방법

ujentus의 이미지

mips 상에 올라가 있는 리눅스 상에서 프로젝트를 하고 있는데요..

그런데.. 리눅스의 특정 시스템 콜 (뭐 open read write 등등...)을 어떤 함수가 콜~ 했는지 알고 싶거든요..

예를들어, 프로그램을 쭉 돌려본 후에 open이라는 시스템콜을 어느어느 함수들이 불렀는가? 에 대한 트레이스 정도를 뽑아내어 보고 싶은데...

abc()
{
...
open(....) ; ...
...
}

여기에서 abc()라는 함수를 알아 내고 싶다는 거죵.. ^^

일단 이런 일을 해주는 툴이 있다면 그 툴을 알고싶고
없다면 직접 만들려고 합니다. 직접 만든다면 어떤식으로 접근하면
되는지에 대한 접근법이나 꽁수(?)를 알고 싶어요~~ ^^

맹고이의 이미지

strace 같은 것 말씀이신지...

ujentus의 이미지

strace 는 저런 기능이 없더라구요 ^^

morris의 이미지

ltrace 는 어떻습니까?

ujentus의 이미지

확인해봤습니다. ltrace는 라이브러리 함수들에 대한 호출을 추적하여 주더군요^^ strace는 시스템콜에 대한 추적을 수행하구요.. 그런데, 제가 원하는건 위에서 보듯이 abc() 처럼 사용자가 정의한 함수에 대해서도 추적을 할 수 있는 것을 원합니다 ^^

morris의 이미지

gprof 는 어떻습니까?