시스템 호출 이벤트 추적 출력 형식을 ftrace로 변경

시스템 호출 이벤트 추적 출력 형식을 ftrace로 변경

sys_enter_openat 시스템 호출에 대해 ftrace 이벤트 추적을 활성화했습니다. events/syscalls/sys_enter_openat/format에 제공된 해당 출력 형식은 다음과 같습니다.

print fmt: "dfd: 0x%08lx, filename: 0x%08lx, flags: 0x%08lx, mode: 0x%08lx", ((unsigned long)(REC->dfd)), ((unsigned long)(REC->filename)), ((unsigned long)(REC->flags)), ((unsigned long)(REC->mode))

예상대로 ftrace의 샘플 출력 라인은 다음과 같습니다.

msm_irqbalance-1338  [000] ...1 211710.033931: sys_openat(dfd: ffffff9c, filename: 5af693f224, flags: 2, mode: 0)

대신 filename: 5af693f224표시될 수 있도록 출력 형식을 변경하는 방법이 있습니까 ?filename: <string>hex(5af693f224)

따라서 기본적으로 특정 이벤트(예: 위의 sys_enter_openat)를 ftrace로 추적할 때 출력 형식을 변경하는 방법이 있습니다.

systemtap이나 krpobe를 사용하여 이 작업을 수행할 수 있다고 생각하지만 현재 내 설정에서는 이를 허용하지 않습니다.

답변1

안타깝게도 현재로서는 이를 수행할 수 있는 방법이 없습니다. 하지만 나중에 이와 같은 작업을 수행할 수 있는 합리적인 인터페이스와 구현을 찾을 수 있다면 추가할 수도 있습니다. 출력이 다르게 표시되도록 트리거를 추가할 수도 있습니다.

저는 StackExchange를 처음 접했을 수도 있지만 ftrace(본명 Steven Rostedt - git History 검색)의 저자입니다. 코드를 작성하면 "진짜 답"이 나타난다!

답변2

ftrace 추적 이벤트 인쇄를 재정의하려면 BPF만 사용할 수 있는 것 같습니다. ftrace로는 불가능합니다. ftrace 추적 이벤트 인쇄는 사용자 공간에서 구성 가능해야 합니다. 그거 좋을 것 같아요.

관련 정보