Systemtap 프로브를 사용하여 Linux에서 각 읽기 및 쓰기 작업의 바이트 가상 주소 위치를 얻습니다.

Systemtap 프로브를 사용하여 Linux에서 각 읽기 및 쓰기 작업의 바이트 가상 주소 위치를 얻습니다.

Systemtap 검색 도구를 사용하여 syscall.read 및 syscall.read.return 함수를 검색하여 파일에서 읽은 총 바이트 수를 얻는 방법을 찾았습니다. syscall.read.return에는 읽은 총 바이트 수를 제공하는 returnval()이 있습니다. 각 읽기 및 쓰기 작업에 대해 바이트 가상 주소를 가져와야 합니다. Linux에서 Systemtap 프로빙 도구를 사용하여 이를 달성하려면 어떻게 해야 합니까?

답변1

다음 SystemTap 스크립트를 사용하면 바이트를 문자열로 읽을 수 있습니다.

probe syscall.read.return
{
  printf("writen_bytes_as_a_string=%s\n", user_string_n(@entry($buf),$return))
}

관련 정보