首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“`strace -r`”和“`strace -T`选项”之间的区别?

“`strace -r`”和“`strace -T`选项”之间的区别?
EN

Unix & Linux用户
提问于 2016-11-24 03:58:38
回答 2查看 5.3K关注 0票数 2

这两者有什么区别?手册页上写着:

代码语言:javascript
运行
复制
   -r          Print a relative timestamp upon entry to each system call.  This records the time difference between  the  beginning  of
               successive system calls.

   -T          Show the time spent in system calls.  This records the time difference between the beginning and the end of each  system
               call.

我唯一的解释是,-T只显示每个调用所需的时间,而-r也考虑到在每个syscall之后等待的时间。

这似乎得到了以下事实的支持:当查看straceuptime命令上的相应片段时,-r命令在每次调用中显示的时间比下面的-T长。见下文:

代码语言:javascript
运行
复制
0.000039 uname({sysname="Linux", nodename="ip-172-31-55-20", ...}) = 0
0.000043 open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
0.000045 read(3, "0\n", 8192)      = 2
0.000035 close(3)                  = 0

&

代码语言:javascript
运行
复制
uname({sysname="Linux", nodename="ip-172-31-55-20", ...}) = 0 <0.000010>
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3 <0.000018>
read(3, "0\n", 8192)                    = 2 <0.000014>
close(3)                                = 0 <0.000023>

是这样的吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-11-24 05:33:56

没错,是的。

-r显示的额外时间不是花在等待上的时间,而是做其他不涉及系统(计算、内存操作.)的事情的时间。

票数 1
EN

Unix & Linux用户

发布于 2020-02-06 14:46:27

考虑到这个回答,在计算和其他类似的东西中,strace本身肯定会花费一些时间。

strace的工作方式导致内核在每次系统调用结束时停止对程序的跟踪,所以strace可以检查它,然后继续执行。

因此,连续系统调用开始之间的时间差必须包括strace本身所花费的一些时间。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/325622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档