我正在使用ptrace来计算程序的系统调用 问题是,给定一个程序A,我的程序打印出系统调用的数量(打开,关闭,读取,写入)。
程序A作为参数的程序和strace(带-c选项)的结果是相同的,除了打开的系统调用。
我的节目打印15和strace打印3。
但我猜测,当strace打印其他一些系统调用时,这些可能总结为我的程序计算的15个开放系统调用。
在查看ORIG_EAX / RAX寄存器时,我正在使用SYS_open来检查ptrace的结果。
strace打印的系统调用是here.
更新
我从终端编译我的程序并从那里运行它,结果与strace相同。
我正在开发netbeans。
为什么会这样?
答案 0 :(得分:1)
听起来netbeans正在使用ptrace来控制事物。 (毕竟,没有它,它怎么能做断点和步骤?)因此netbeans可能会向你的程序发送无害的信号。
你可以运行strace -o / tmp / foo(不带-c)来确切知道发生了什么。 (比较netbeans和netbeans下的输出,看看有什么不同。)
如果您想过滤特定的来电,也可以添加“-e open,close”。