linux – 了解dtruss的输出

linux – 了解dtruss的输出,第1张

概述有人能指点我如何理解/解释dtruss(mac)或dtrace输出的报告吗? 我刚试过一个简单的程序.例如,我得到以下输出: PID/THRD SYSCALL(args) = return250/0x103c: getattrlist("/Volumes/CORE/CORE.app\0", 0x7FFF5E8045D8, 0x7FFF5E804250) = 有人能指点我如何理解/解释dtruss(mac)或dtrace输出的报告吗?

我刚试过一个简单的程序.例如,我得到以下输出:

PID/THRD  SYSCALL(args)          = return250/0x103c:  getattrList("/Volumes/CORE/CORE.app
/* print 0 arg output */ syscall::*fork:return /self->start/ {
",0x7FFF5E8045D8,0x7FFF5E804250) = 0 0250/0x103c: geteuID(0x7FFF5E8045E0,0x0,0x7FFF5E804A18) = 501 0250/0x103c: geteuID(0x7FFF5E805DF0,0x7FFF5E805E80) = 501 0250/0x103c: geteuID(0x7FFF5E805540,0x7FFF5E805770) = 501 0250/0x103c: getattrList("/.vol/16777224/21
/* print 0 arg output */ syscall::*fork:return,syscall::geteuID:return /self->start/ {
",0x7FFF5E8046D0,0x7FFF5E803CF0) = 0 0250/0x103c: geteuID(0x7FFF5E805950,0x7FFF5E8059C8) = 501 0250/0x103c: __mac_syscall(0x7FFF8D22057C,0x50,0x7FFF5E805990) = 0 0250/0x103c: geteuID(0x7FFF5E805950,0x51,0x7FFF5E8059A8) = -1 Err#30250/0x103c: geteuID(0x7FFF5E8057D0,0x7FFF5E805848) = 501 0250/0x103c: getattrList("/.vol/16777224/21",0x7FFF5E804960,0x7FFF5E803F80) = 0 0250/0x103c: open("/.vol/16777224/21",0x1FF) = 6 0250/0x103c: geteuID(0x7FFF5E805790,0x7FFF5E805920) = 501 0

我可以看到所有这些系统调用采用十六进制参数.但我怎么解码这些呢?例如,如何找出实际尝试打开的文件?

解决方法 您的示例输出确实显示了open()系统调用(“/.vol/16777224/21”)的路径名.

dtruss是一个shell / DTrace脚本,类似于Solaris中的truss工具(linux上的strace).编码这些工具以了解如何以人类可读的方式显示参数.我在dtruss工具中对其中的一些进行了编码,但可以对其进行改进以了解更多信息.你可以制作一个dtruss的副本并自定义它以添加一些,因为它是一个shell / DTrace脚本.

对于显示十六进制数的系统调用,您可以从阅读手册页开始查看参数是什么.例如,geteuID()没有参数,因此dtruss打印3的默认行为为十六进制令人困惑.它应该打印无,并显示返回值.例如,可以通过更改以下部分来完成此 *** 作:

至:

总结

以上是内存溢出为你收集整理的linux – 了解dtruss的输出全部内容,希望文章能够帮你解决linux – 了解dtruss的输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1018798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存