- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 RHEL 7 和 RHEL 6 上得到了 strace -c
的结果对于这个命令:
strace -c /bin/sleep 20
而且我不明白为什么 nanosleep
的 seconds
列等于 0。我原以为它是 20。
0.00 0.000000 0 1 nanosleep
这是一份完整的 strace 报告:
$ strace -c /bin/sleep 20
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.000019 1 15 12 open
0.00 0.000000 0 1 read
0.00 0.000000 0 5 close
0.00 0.000000 0 8 6 stat
0.00 0.000000 0 3 fstat
0.00 0.000000 0 9 mmap
0.00 0.000000 0 3 mprotect
0.00 0.000000 0 1 munmap
0.00 0.000000 0 3 brk
0.00 0.000000 0 1 1 access
0.00 0.000000 0 1 nanosleep
0.00 0.000000 0 1 execve
0.00 0.000000 0 1 arch_prctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.000019 52 19 total
并且在详细的报告中有对nanosleep的调用:
nanosleep({20, 0}, NULL) = 0
所以秒必须是20,而不是0。你怎么看?
最佳答案
来自 strace(1) 的手册页:
-c
On Linux, this attempts to show system time (CPU time spent running in the kernel)
我认为:
当进程调用 nanosleep() 时,它要求内核暂停一段时间。内核设置一些东西(比如一些标志、计时器、时间戳……),挂起调用进程,然后去做其他事情。strace(1) 报告内核为此花费的时间,而不是进程保持挂起的时间。
可能是这个 -c
strace 选项可以被认为是“-cost”:这个系统调用花费多少时间?
关于linux - strace -c 不显示正确的秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535397/
我知道strace用途 ptrace做这份工作, 但它需要使用 TRACE_ME 运行目标进程在, 这不适用于已经运行的进程的情况。 它如何在已经运行的进程上工作? 最佳答案 strace -p -
精确是我在这里关注的重点...... mmap(0x37aa74d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI
我正在尝试调试 Gammu,一个“移动电话的库和命令行实用程序”,它在与调制解调器正常通信时“超时”。 gammu recognize -> 在指定的超时时间内没有响应。可能是手机未连接。 查看它产生
当我跑 strace -f strace /bin/ls 知道 strace 是如何工作的,它失败了 ptrace(PTRACE_TRACEME, 0, 0, 0) = -1 EPERM (Opera
[root@woyo test]# strace -o /tmp/lsof.strace -p 5625 Process 5625 attached - interrupt to quit q 有谁知
我想用strace跟踪系统调用。读写太多,因此我想将它们排除在外。 这是我的测试: strace -e trace=!read ls 我的电脑(ubuntu 14)无法运行此命令。错误消息是“!ope
我正在研究这个问题并决定自己实现该程序。 Interpreting STRACE output - pipes and forks strace 输出对我来说是不同的: execve("./fork"
我正在尝试调试 ngspice 的原因在运行模拟时将烦人的换行符打印到 stderr。我试图在可追溯到 1993 年的 2400 个源文件之一中找到它,但这并不像听起来那么容易!然而,这确实意味着我有
strace 密码: getcwd("/root"..., 4096) = 6 ltrace 密码: getcwd(NULL, 0)
open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libselinux.so.1", O_RDONLY) = 3 open("/lib/l
我有一个单线程的 unix 进程,它通过 tcp 与其他进程进行通信。 问题如下。 当我启动进程时,它会挂起(没有忙循环),直到我杀死它。 有趣的是,一旦我将 strace 附加到它,它就会继续以预期
我正在使用 strace 来查找程序中可能存在的错误,并且我有以下输出: open(0x7765533c, O_RDONLY) = -1 EACCES (Permission denied) 如何获取
我的 strace 给我这个输出 fcntl64(3, 0xe /* F_??? */, 0xff963a24) = 0 我希望看到类似的东西,在那里我可以看到 readalbe 内容而不是地址...
我有一个启动 libmicrohttpd 网络服务器(它管理自己的线程)的程序,然后在主线程中调用“暂停”,这样整个程序就不会退出。 我正在尝试对这个程序进行 strace,但是一旦我进入“暂停”调用
我想在后台运行 strace。例如,我在跑 strace -esetsid setsid sleep 123 但我想继续运行其他东西,直到 setsid 返回。显然,只需将 & 附加到 sleep 1
我有一个作为守护进程运行的 perl 脚本。它每 10 秒访问一次数据库,如果队列中有任何作业,它会生成一个单独的 shell 来执行单个作业。但脚本经常无法从数据库获取作业。 理想情况下应该像这
我知道它使用 ptrace 来实现, 它可以在寄存器中获取参数, 但他们只是数字, strace如何将它们转换成文字信息? 它只是针对每个系统调用的硬编码吗? 最佳答案 基本上,是的,它是硬编码的。如
我正在编写一个 python 程序,通过使用 ctypes 的挂载系统调用来挂载 fuse 文件系统。现在它在挂载系统调用中给出无效参数错误。我检查了所有的论点,它们似乎是正确的。我听 friend
尝试调试不返回 bash 提示符的程序,我使用了 strace并给它 PID。该程序是一个二进制文件,我没有源代码。根据strace , 有一个 -1 EBADF (Bad file descript
我正在尝试调试应用程序的启动。我想使用 strace 来跟踪应用程序在启动期间执行的系统调用,但是一旦应用程序启动,我不希望 strace 但是很难追踪到应用程序的启动。 有没有办法捕获应用程序启动的
我是一名优秀的程序员,十分优秀!