40.2. SystemTap을 사용하여 함수 호출 추적
para-callgraph.stp SystemTap 스크립트를 사용하여 함수 호출 및 함수 반환을 추적할 수 있습니다.
사전 요구 사항
- Systemtap 설치에 설명된 대로 SystemTap을 설치했습니다.
절차
- para-callgraph.stp 스크립트를 실행합니다.
# stap --example para-callgraph.stp 'argument1' 'argument2'
스크립트 para-callgraph.stp 는 두 개의 명령줄 인수를 사용합니다.
- 추적하려는 항목/종료 기능의 이름입니다.
- 스레드별로 추적을 활성화 또는 비활성화하는 선택적 트리거 기능입니다. 트리거 함수가 아직 종료되지 않은 한 각 스레드에서 추적이 계속됩니다.
다음 예제를 고려하십시오.
# stap -wv --example para-callgraph.stp 'kernel.function("*@fs/proc.c*")' 'kernel.function("vfs_read")' -c "cat /proc/sys/vm/* || true"
다음과 같습니다.
- -w : 경고를 표시하지 않습니다.
- -v : 시작 커널의 출력이 표시됩니다.
-
-c 명령 : 이 예제에서는
/bin/true인 명령을 실행하는 동안 함수 호출을 계산하도록 SystemTap에 지시합니다
.
출력은 다음과 유사해야 합니다.
[...] 267 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5 269 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5 0 gnome-terminal(2921):->fput file=0xffff880111eebbc0 2 gnome-terminal(2921):<-fput 0 gnome-terminal(2921):->fget_light fd=0x3 fput_needed=0xffff88010544df54 3 gnome-terminal(2921):<-fget_light return=0xffff8801116ce980 0 gnome-terminal(2921):->vfs_read file=0xffff8801116ce980 buf=0xc86504 count=0x1000 pos=0xffff88010544df48 4 gnome-terminal(2921): ->rw_verify_area read_write=0x0 file=0xffff8801116ce980 ppos=0xffff88010544df48 count=0x1000 7 gnome-terminal(2921): <-rw_verify_area return=0x1000 12 gnome-terminal(2921): ->do_sync_read filp=0xffff8801116ce980 buf=0xc86504 len=0x1000 ppos=0xffff88010544df48 15 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5 18 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5 0 gnome-terminal(2921):->fput file=0xffff8801116ce980