我想跟踪find命令发出的系统调用来调试一些性能问题但是我无法弄清楚如何在Mac OS X Yosemite上执行此操作.我如何跟踪任意程序的系统调用,类似于FreeBSD上的strace?我对跟踪文件系统相关的调用特别感兴趣.
jsp*_*cal 32
你可以像使用dtruss一样使用
sudo dtruss find ~/repo -depth 2 -type d -name '.git'
Run Code Online (Sandbox Code Playgroud)
该实用程序的手册页将帮助您根据需要定制工具的使用.
dus*_*uff 30
在当前版本的macOS下,/usr/bin无法跟踪SIP(如)所涵盖的路径下的可执行文件.
您可以通过在主目录中复制可执行文件并跟踪副本来绕过此问题:
cp /usr/bin/find find
sudo dtruss ./find …
Run Code Online (Sandbox Code Playgroud)
你可能会有更好的运气ktrace。例如(在索诺玛 14.0 上):
sudo ktrace trace -S -f C3 -c find .
Run Code Online (Sandbox Code Playgroud)
-f= 过滤器描述,C3= 类 3 = DBG_FSYSTEM, -S= 尽可能将参数打印为字符串。
在优胜美地,它会是这样的sudo ktrace -t cin -c find .
更多ktrace过滤器示例请参见/sf/answers/5389135881/。
| 归档时间: |
|
| 查看次数: |
26825 次 |
| 最近记录: |