2

ファイル名やファイル記述子など、glibc の「open」関数から返されるデータにアクセスしたい

私は試します

probe process("/lib*/libc.so.*").function("open") { 
   fd = $fd
   filename = user_string($filename)
   printf("%d %d %s %s\n",pid(),ppid(),filename,fd)
}

しかし、それはエラーです

セマンティック エラー: 未解決のターゲット シンボル式: 識別子 '$fd' at malloc.stp:3:10 ソース: fd = $fd ^

パス 2: 分析に失敗しました。[マンエラー::pass2]

4

1 に答える 1

6

openシステムコールは引数を取らないのでfd.functionプローブは当然それを見つけられません。から返され たファイル記述子を確認したい場合はopen.function("...").returnポイントを調べて、$return.

probe process("/lib*/libc.so.6").function("open").return {
    fd=$return
    path=user_string(@entry($filename))
    printf("open %s -> $d\n", path, fd)
}
于 2015-10-05T14:38:10.963 に答える