我正在使用 ptrace 来计算程序的系统调用。
问题是给定一个程序 A,我的程序打印出系统调用的数量(打开、关闭、读取、写入)。
我的程序和以程序 A 作为参数的 strace(带有 -c 选项)的结果是相同的,除了打开的系统调用。
我的程序打印了 15,strace 打印了 3。
但我猜测,由于 strace 还会打印一些其他系统调用,这些可能加起来就是我的程序计算的 15 个打开的系统调用。
在查看 ORIG_EAX/RAX 寄存器时,我正在使用 SYS_open 检查 ptrace 的结果。
strace 打印的系统调用在这里。
更新:
我从终端编译我的程序并从那里运行它,结果与 strace 相同。
我正在netbeans中开发。
为什么会这样?