22.2. perf를 사용하여 함수 내에서 줄에 uprobes 생성
그런 다음 이러한 추적점은 프로세스 또는 애플리케이션 동작을 더 잘 이해하기 위해
및 perf
statperf 레코드와
같은 다른 perf 툴과 함께 사용할 수 있습니다.
사전 요구 사항
-
perf 설치에 설명된 대로
perf
사용자 공간 도구가 설치되어 있습니다. 실행 파일의 디버깅 기호를 가져옵니다.Gets the debugging symbols for your executable:
# objdump -t ./your_executable | head
참고이렇게 하려면 실행 파일의
debuginfo
패키지를 설치하거나, 실행 파일이 로컬에서 개발한 애플리케이션인 경우, 디버깅 정보를 사용하여 애플리케이션을 컴파일해야 하며 GCC의-g
옵션을 사용해야 합니다.
절차
uprobe를 배치할 수 있는 함수 행을 확인합니다.
$ perf probe -x ./your_executable -L main
이 명령의 출력은 다음과 유사합니다.
<main@/home/user/my_executable:0> 0 int main(int argc, const char **argv) 1 { int err; const char *cmd; char sbuf[STRERR_BUFSIZE]; /* libsubcmd init */ 7 exec_cmd_init("perf", PREFIX, PERF_EXEC_PATH, EXEC_PATH_ENVIRONMENT); 8 pager_init(PERF_PAGER_ENVIRONMENT);
원하는 함수 행에 대한 uprobe를 생성합니다.
# perf probe -x ./my_executable main:8 Added new event: probe_my_executable:main_L8 (on main:8 in /home/user/my_executable) You can now use it in all perf tools, such as: perf record -e probe_my_executable:main_L8 -aR sleep 1