![Systemtap 프로브를 사용하여 Linux에서 각 읽기 및 쓰기 작업의 바이트 가상 주소 위치를 얻습니다.](https://linux55.com/image/150145/Systemtap%20%ED%94%84%EB%A1%9C%EB%B8%8C%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20Linux%EC%97%90%EC%84%9C%20%EA%B0%81%20%EC%9D%BD%EA%B8%B0%20%EB%B0%8F%20%EC%93%B0%EA%B8%B0%20%EC%9E%91%EC%97%85%EC%9D%98%20%EB%B0%94%EC%9D%B4%ED%8A%B8%20%EA%B0%80%EC%83%81%20%EC%A3%BC%EC%86%8C%20%EC%9C%84%EC%B9%98%EB%A5%BC%20%EC%96%BB%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
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))
}