这对于调试很有用(因此编程相关).在linux上,我们可以使用该命令
strace -feopen python myfile.py
Run Code Online (Sandbox Code Playgroud)
找出加载了哪些python模块和共享对象.macOS X上有一个等效的单行程吗?
如何在 MacOS 上诊断 Docker 的原因,特别是com.docker.hyperkit
使用 100% 的 CPU?
Docker stats 显示所有正在运行的容器都具有较低的 CPU、内存、网络 IO 和块 IO。
iosnoop 显示com.docker.hyperkit
每秒对文件执行大约 50 次写入,总计每秒 500KB Docker.qcow2
。根据什么是 Docker.qcow2?,Docker.qcow2
是一个稀疏文件,是所有 Docker 容器的持久存储。
在我的情况下,文件不是那么稀疏。物理大小与逻辑大小相匹配。
dtrusssudo dtruss -p $DOCKER_PID
显示大量psynch_cvsignal
和psynch_cvwait
调用。
psynch_cvsignal(0x7F9946002408, 0x4EA701004EA70200, 0x4EA70100) = 257 0
psynch_mutexdrop(0x7F9946002318, 0x5554700, 0x5554700) = 0 0
psynch_mutexwait(0x7F9946002318, 0x5554702, 0x5554600) = 89474819 0
psynch_cvsignal(0x10BF7B470, 0x4C8095004C809600, 0x4C809300) = 257 0
psynch_cvwait(0x10BF7B470, 0x4C8095014C809600, 0x4C809300) = 0 0
psynch_cvwait(0x10BF7B470, …
Run Code Online (Sandbox Code Playgroud) 它看起来像在OS X 10.11 El Capitan中,dtruss
并且dtrace
不能再做他们想要做的事了.这是我尝试运行时遇到的错误sudo dtruss curl ...
:
dtrace:无法执行curl:dtrace无法控制使用受限制的权利签名的可执行文件
我遇到过人们注意到这个问题,但到目前为止还没有解决方案.
有没有办法解决这个问题或解决这个问题?
OS X缺少linux strace
,但它dtrace
本来应该是更好的.
但是,我错过了对单个命令进行简单跟踪的功能.例如,在linux上我可以写入strace -f gcc hello.c
caputre所有系统调用,它给出了编译器编译程序所需的所有文件名列表(优秀的memoize脚本是基于这个技巧)
我想在mac上移植memoize,所以我需要一些strace
.我真正需要的是gcc
读取和写入文件的列表,所以我需要的更多是一个truss
.我当然可以说dtruss -f gcc hello.c
并获得一些相同的功能,但随后编译器运行root权限,这显然是不可取的(除了大量的安全风险,一个问题是该a.out
文件现在由root拥有:-)
然后我尝试了dtruss -f sudo -u myusername gcc hello.c
,但这感觉有点不对,并且无论如何都不起作用(a.out
这次我得不到文件,不知道为什么)
所有长篇故事都试图激发我的原始问题:如何dtrace
使用普通用户权限运行我的命令,就像strace
在linux中一样?
编辑:似乎我不是唯一一个想知道如何做到这一点:问题#1204256与我的几乎相同(并且具有相同的次优sudo答案:-)
在OSX 10.11.1上运行iosnoop命令时,出现以下文本错误:
dtrace: invalid probe specifier
/*
* Command line arguments
*/
inline int OPT_dump = 0;
inline int OPT_device = 0;
inline int OPT_delta = 0;
inline int OPT_devname = 0;
inline int OPT_file = 0;
inline int OPT_args = 0;
inline int OPT_ins = 0;
inline int OPT_nums = 0;
inline int OPT_dtime = 0;
inline int OPT_mount = 0;
inline int OPT_start = 0;
inline int OPT_pid = 0;
inline int OPT_name = 0;
inline int OPT_end …
Run Code Online (Sandbox Code Playgroud) 我想在Ubuntu上使用DTrace.
https://github.com/dtrace4linux/linux
上面有一个用于Linux的github.
http://www.oracle.com/technetwork/server-storage/solaris/dtrace-tutorial-142317.html
先感谢您.Journeyer
我有一些在Linux上使用PThreads的线程代码,我怀疑它正遭受过多的锁争用.有哪些工具可供我测量?
Solaris有DTrace和plockstat.Linux上有类似的东西吗?(我知道Linux最近的DTrace端口,但它似乎还没有为黄金时间做好准备.)
我正在寻找一种方法来对Linux上的脚本执行时间进行精确Node.JS
分析.
有一些有趣的项目,比如NodeTime.com Performance Profiler,但是它描述了I/O httprequests的时间等,而不是代码行的执行时间.
我正在寻找一种方法来弄清楚我可以在哪里优化我的Javascript,大部分时间花在哪里,等等.
我见过的一个有趣的方法是尝试使用DTrace创建FlameGraph来分析Node.JS.
但是,它dtrace
是特定于Solaris的.
dtrace
可以在sytemtap-sdt-dev
包中找到.但是,stap dtrace
不一样,缺少所有相关的钩子/探针.Oracle
端口,但没有人会推荐它.显然,它只有大约0.1%的Paul Fox端口探测器.(这是具有讽刺意味,因为Oracle
是以前Sun
的原作者dtrace
为Solaris
)在Linux中,如何使用终端或使用Eclipse,我可以分析我的Node.JS脚本的代码吗?我正在寻找像Zend Profiler这样的特定内容,以显示PHP脚本代码中每个命令的执行时间.
osx拥有非常强大的dtrace/ktrace/dtruss工具 - 但是我不愿意投入必要的时间来学习如何处理它们.
什么是在OSX上获得linux ltrace(可能是strace)的等效功能的最简单方法?