问题标签 [dtrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - OS X:附加到正在运行的进程并读取其环境变量
是否可以(如果可以,如何?)读取正在运行的进程的环境变量。更具体地说,我关心的是进程本身设置的环境变量(使用 setenv() 或类似方法),而不是进程启动时设置的一般用户会话环境变量。
我认为 DTrace 将成为这项工作的工具,但我在网上找到的唯一解决方案(来自这个邮件列表线程)似乎特定于 Solaris,因为该脚本无法在我的 Mac 上执行。
也许 Instruments 以某种方式公开了这个功能,而我还没有找到它?
我也尝试过Tasks Explorer,这是一个不错的小应用程序,它显示了包括环境变量在内的进程信息,但它不显示进程本身设置的任何环境变量,这正是我所追求的。
任何帮助将非常感激!
objective-c - 如何过滤 Objective-C 的 DTrace 输出?
我正在学习DTrace,它是非常强大的工具。但一个问题是 DTrace 输出的信息太多,其中大部分是 NS 类。
但我的问题是,如果用户的类没有正确的前缀,我如何过滤系统类?
(这个主题有一个类似的 Stack Overflow 问题,[How to detect without the system method or system framework with DTrace on Mac OS X?]。)
performancecounter - 每个 NFS 挂载的 dtrace 脚本 io 计数器
我需要在我的 Nexenta 机器(基于 OpenSolaris)上测量每个 NFS 挂载的性能计数器。
iostat 很棒,问题是它按设备计数,而不是在 NFS 级别。有什么办法可以用 dtrace 脚本做到这一点?
我感兴趣的计数器:(CIFS/NFS) avg_latency per Volumes/Folder (CIFS/NFS) read_latency per Volumes/Folder (CIFS/NFS) write_latency per Volumes/Folder (CIFS/NFS) read_ops/s per Volumes/Folder (CIFS/ NFS) write_ops/s per Volumes/Folder (CIFS/NFS) read_data/s per Volumes/Folder (CIFS/NFS) write_data/s per Volumes/Folder c pu_util%
谢谢!
java - Time Profiler、Instruments、OS X 中缺少 JAVA 过程名称
我正在使用 Java 编写算法实现。在 OS X 10.7 之前,我使用 Shark Profiler 来分析我的实现,效果很好。但是,新的 Instruments 不再找到过程名称。我已经尝试使用 Shark 的 VM 参数(即 -agentlib:Shark )运行 java 应用程序,但它们在 10.7 中是未知的,而且我找不到这样的仪器代理库。
关于如何将程序名称附加到仪器中的符号名称(一些十六进制数字)的任何想法?我正在使用 Eclipse Indigo,如果这有什么不同的话。
谢谢!
编辑:到目前为止,OS X Mountain Lion 没有任何改变。
编辑#2:(?)开发人员通过苹果的错误报告者的更新:
dtrace 过去曾支持 Java 堆栈,但老实说,我不能说是否一直保持支持。对于您要测量的内容,这可能是一种可行的解决方法——否则,这不是性能工具目前的优先事项。您可能希望从 /usr/bin/cpu_profiler.d 中的 D 脚本开始,并修改它以收集 jstack。
编辑#3:好的,经过更多讨论后发现开发人员本人并不知道该脚本的来源。显然,Instruments 中的时间分析器无论如何都不使用 DTrace,所以剩下的唯一选择就是编写我们自己的 DTrace 脚本或工具。
你是对的,我道歉。我不确定那个脚本是从哪里来的,当我仔细查看它时,它没有 jstack 动作,所以它不是你想要的。看起来我可以为您提供的唯一 java 分析选项是 DTrace。DTrace 有一个配置文件提供程序和一个收集 java 堆栈的 jstack 操作。您可以使用“聚合”来确定最重的堆栈跟踪,所有这些都可以在命令行中进行。DTrace 的文档主要由 Sun 维护,我会指导您阅读任何 DTrace 教程,因为大多数都包含配置文件提供程序。
不管人们在网上怎么说,Instruments 并没有在所有事情上都使用 DTrace,特别是时间分析,所以我无法在 Instruments UI 中为您提供快速修复。
perl - 我可以在 OS X 10.5 上使用 dtrace 来确定我的哪个 perl 子程序导致的内存分配最多吗?
我们有一个相当大的 perl 代码库。
一些运行多个小时的进程(ETL 作业)突然开始消耗比平时更多的 RAM。分析相关版本的变化是一个缓慢而令人沮丧的过程。我希望使用更自动化的分析来确定罪魁祸首。
我们的实时环境是 Debian Squeeze 上的 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 在进程生命周期内执行每个子程序时分配的内存总量。
关于如何做到这一点的任何想法?
macos - 在 OS X 中的关键事件流到达应用程序之前对其进行调试
(control-apostrophe)
我有一个用户报告说我在 OS X 上的应用程序中无法使用特定的击键。这对他在其他机器上确实有效。
我添加了一些日志记录,但我的应用程序从未收到NSEvent
keyDown 的请求。
禁用辅助设备的通用访问也没有解决它。
系统偏好设置中的键盘快捷键中没有任何内容使用该快捷键。
有什么方法可以通过操作系统跟踪击键路径以找出为什么我的应用程序没有得到它?这是 dtrace 可以做的事情吗?
iphone - iphone:strace、dtruss、dtrace 还是同等产品?
有谁知道是否有类似strace
、、dtruss
或dtrace
用于 iPhone 的东西?
macos - 是否可以在 Mac OS X 上通知 DTrace 动态生成的代码?
我们希望扩展 Mono 的 VM 以生成可供DTrace和仪器使用的信息。
我正在考虑对 Mono 运行时进行更改以使其注册或通知它动态生成的代码,以便 DTrace 可以为这些代码块生成有用的信息。
c - 跟踪一个短暂的应用程序
我编写了一个 DTrace 脚本,用于测量在我的 C 程序中的函数内花费的时间。程序本身运行,输出一些数据然后退出。
问题是它完成了让我快速获取进程 ID 并启动 DTrace 的方法。
目前我的代码中有一个 sleep() 语句,它给了我足够的时间来启动 DTrace。必须修改代码才能获取有关它的信息有点违背 Dtrace 的目的......对。
基本上我所追求的是让 DTrace 等待进程 ID 出现,然后针对它运行我的脚本。
macos - 是否可以从 DTrace 隐藏 OS X 应用程序?
我正在开发一个 OS X 应用程序,我想隐藏它以防止 DTrace 检查。我知道这个P_LNOATTACH
标志,但我读过的所有内容都告诉我有办法绕过它。可能吗?