标签: dtrace

解释dtruss输出,如"psynch_cvwait(...)= -1 Err#316"

dtruss似乎是分析OS X上应用程序(错误)行为的有用工具.我strace在Linux上找到了我心爱的关闭事物.但解释其输出需要了解它所引用的系统调用,有时还需要了解它们可能产生的错误条件.以线为例

psynch_cvwait(0x6BE38D54, 0x100000100, 0x0)      = -1 Err#316
Run Code Online (Sandbox Code Playgroud)

我对文档来源感兴趣,这些文档可以让我找出这个系统调用的目的,它的参数表示什么,以及这个错误代码代表什么.非常像我期望从libc函数手册页.我要求一个描述上述和类似系统调用的参考,具有上述和类似的错误.因此,只需将该行作为我希望能够理解的输出类型的示例.

有关OS X系统调用的相关参考文档是什么?

您的参考覆​​盖的系统调用越多越好.

macos darwin dtrace system-calls wait

18
推荐指数
3
解决办法
4521
查看次数

指示学习如何使用DTrace

当我要求使用工具来分析Rails应用程序时,有人指着DTrace.由于我在MacOSX工作站上工作并在OpenSolaris上部署,因此这是一种有效的方法.但我对DTrace知之甚少.

除了通常的嫌疑人,Sun DTrace页面和那里的可用信息,还有其他杀手指针可以学习Dtrace吗?

profiling dtrace

13
推荐指数
3
解决办法
5791
查看次数

如何使用系统分析器禁用Java堆栈帧优化或配置文件堆栈?

系统分析器(如DTrace和Linux perf_events)能够分析来自JVM的堆栈跟踪.现在,除了符号(这是另一个问题),DTrace和perf_events都会收集许多只有1帧的堆栈.这些是部分不完整的堆栈.

我尝试过DTrace jstack()和Linux perf_events,同时指向帧指针和矮化堆栈.

我相信这是由于热点编译优化的帧.有没有办法禁用此优化,以便标准系统分析器(如Solaris DTrace和Linux perf)工作?

我已经尝试了以下选项:-XX:+ DeoptimizeRandom -XX:MaxInlineSize = 0 -XX:-OmitStackTraceInFastThrow -XX:+ UnlockDiagnosticVMOptions -XX:+ ShowHiddenFrames

java linux jvm dtrace jvm-hotspot

13
推荐指数
1
解决办法
558
查看次数

Mac OSX:使用 dtruss?

我正在尝试在 Mac OSX Catalina 中 dtruss 进程,但是 dtrace 报告错误。

$ sudo dtruss whoami                 
dtrace: system integrity protection is on, some features will not be available

dtrace: failed to execute whoami: (os/kern) failure
Run Code Online (Sandbox Code Playgroud)

我基本上是想获得堆栈跟踪。任何人都可以提供有关完成此操作的指导吗?

谢谢

macos system.diagnostics dtrace

12
推荐指数
1
解决办法
4385
查看次数

如何从一开始就跟踪程序而不以root身份运行它

我正在编写一个调用DTrace来跟踪用户指定的程序的工具.

如果我的工具使用dtrace -c将程序作为DTrace的子进程运行,我不仅不能将任何参数传递给程序,而且程序运行时具有DTrace的所有权限 - 就像root(我正在使用) Mac OS X).这使得某些事情应该有效,并且显然会使很多事情变得不可行.

我知道的另一个解决方案是自己启动程序,通过发送它来暂停它,将其SIGSTOP传递给它dtrace -p,然后通过发送它继续它SIGCONT.问题是,当DTrace收集符号信息时,程序运行几秒钟而没有被跟踪,或者如果我在继续进程之前睡了几秒钟,DTrace会抱怨objc<pid>:<class>:<method>:entry没有探测器匹配.

有没有办法可以在用户的​​帐户下运行程序,而不是root用户,但仍然可以让DTrace从头开始跟踪它?

macos dtrace

11
推荐指数
3
解决办法
6420
查看次数

为什么iosnoop(IO snooping磁盘上的文件)返回带有问号的路径?

如果我在跑

sudo iosnoop | grep "gem"
Run Code Online (Sandbox Code Playgroud)

然后在另一个终端运行

gem env
Run Code Online (Sandbox Code Playgroud)

在iosnoop终端,我看到:

dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in …
Run Code Online (Sandbox Code Playgroud)

io macos trace path dtrace

10
推荐指数
2
解决办法
1659
查看次数

如何在Mac OS X Leopard上的dtrace中使用热点探针?

我的Leopard系统内置了dtrace.我还安装了Java 6,使用Apple提供的安装程序:

$ java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

然而,dtrace在列出探测时没有显示热点探测:

$ sudo dtrace -l | grep spot
$

任何人都可以告诉我如何在Leopard中为Java启用dtrace探针(据说它们随Java 6一起提供)?

java macos osx-leopard dtrace

9
推荐指数
1
解决办法
1835
查看次数

在Time Profiler,Instruments,OS X中缺少JAVA过程名称

我正在使用Java编写算法实现.在OS X 10.7之前,我使用Shark Profiler来分析我的实现,它的工作非常好.但是,新仪器不再找到程序名称.我已经尝试使用鲨鱼的VM参数运行java应用程序(即-agentlib:Shark),但它们对于10.7是未知的,我找不到这样的工具的agentlib.

有关如何将过程名称附加到Insturments中的符号名称(有些十六进制数字)的任何想法?我正在使用Eclipse Indigo,如果这有任何区别的话.

谢谢!

编辑:到目前为止,OS X Mountain Lion没有任何改变.

编辑#2:来自(?)开发人员的更新通过apple的bug报告者:

dtrace过去一直支持Java堆栈,但老实说我不能说是否支持了这种支持.对于您要测量的内容而言,这可能是一种可行的解决方法 - 此时,这不是性能工具的优先级.您可能希望从/usr/bin/cpu_profiler.d中的D脚本开始并修改它以收集jstack.

编辑#3:好的,经过一些更多的讨论后发现开发人员本身并不知道该脚本的来源.显然,仪器中的时间分析器无论如何都不使用DTrace,因此唯一的选择是编写我们自己的DTrace脚本或仪器.

你是对的,我道歉.我不确定那个脚本来自哪里,当我仔细查看它时,它没有jstack动作,所以它不是你想要的.看起来我能提供的唯一java分析选项是DTrace.DTrace有一个配置文件提供程序,以及一个收集java堆栈的jstack操作.您可以使用"聚合"来确定最重的堆栈跟踪,所有这些都可以从命令行进行.DTrace的文档主要由Sun维护,我会引导您访问任何DTrace教程,因为大多数都涵盖了配置文件提供程序.

尽管人们在网上说,仪器不会将DTrace用于所有内容,特别是时间分析,因此我无法在仪器UI中为您提供快速修复.

java macos profiling dtrace instruments

9
推荐指数
1
解决办法
541
查看次数

我可以在OS X 10.5上使用dtrace来确定哪个perl subs导致了大部分内存分配?

我们有一个非常棒的perl代码库.

一些运行多个小时的进程(ETL作业)突然开始消耗比平常更多的RAM.分析相关版本的变化是一个缓慢而令人沮丧的过程.我希望使用更自动化的分析来识别罪魁祸首.

我们的现场环境是关于Debian挤压的perl 5.14.

不过,我可以访问很多OS X 10.5机器.Dtrace和perl似乎在这个平台上很好地一起玩.似乎在Linux上使用dtrace需要启动更多工作.我希望我们的实时系统和开发OS X系统之间的内存分配模式类似 - 或者至少相似,足以帮助我找到这种新内存使用的起源.

这个幻灯片:

https://dgl.cx/2011/01/dtrace-and-perl

显示了如何使用dtrace来显示perl sub对malloc的调用次数.我感兴趣的是跟踪perl在进程生命周期内执行每个sub时分配的内存总量.

关于如何做到这一点的任何想法?

perl dtrace

9
推荐指数
1
解决办法
679
查看次数

如果没有DTrace可用,Instruments如何从iOS收集数据?

我试图了解XCode的仪器的内部工作原理.在MacOS上,它可以依赖DTrace来收集各种分析数据.在iOS上,它也有很多功能,但我反复阅读DTrace尚未移植到iOS.

那怎么办?

关于DTrace的Apple文档并没有告诉我很多关于内部工作的信息.然而,我注意到,当使用Instruments从XCode分析我自己的应用程序时,XCode似乎以不同的方式构建它.这是否意味着它将一些独立的DTrace提供程序与我的代码链接?

提前致谢!

/ e:如果我能做到的话,我会用我的整个6个声誉点给我这个问题.

dtrace ios xcode-instruments

9
推荐指数
1
解决办法
1483
查看次数