在哪个呼叫上,该进程被阻止?

我有一个应该与CPU绑定的程序,但是它使用的CPU远远少于100%,并且没有尽可能快地消耗输入.这意味着我的进程正在阻塞或在某处休眠.

如何找到大部分时间阻塞了我的流程的电话?是否有工具或调试过程可以测量该时间在每个阻塞的系统调用上睡眠多少时间?

解决方法:

strace是一个选项:

$strace -wc sleep 1
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 99.96    1.000146     1000146         1           nanosleep
  0.01    0.000131         131         1           execve
  0.01    0.000082          10         8           mmap
[...]
上一篇:c#-在Visual Studio中表现异常的断点


下一篇:JavaScript调试器能否在“读取此变量时”在那里做断点?