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))
}