问题标签 [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 - DTrace 脚本从不报告写入系统调用
我正在使用以下 DTrace 脚本来跟踪 bash 的读写系统调用:
它成功匹配了 2 个探针,但无论我输入什么,我都只看到读取调用。没有报告写调用。当 shell 回显到屏幕时,我期待收到 write 调用。
脚本是错误的,还是我对 bash 的工作原理有错误的假设?
我在 OSX Mountain Lion 下运行
c++ - Linux 上的 dtrace 并不总是在程序退出时删除用户态探测——为什么?
(如果您想了解我是如何安装 dtrace 的,请参阅本文结尾 - 现在我假设您已经安装了它)
我按照以下步骤制作了一个完全没有问题的自定义探针:
一个。用我的探针定义创建 thing.d
B.创建一个简单的 main.cpp
C.编译(但不链接)main.cpp。请注意您必须如何定义 _DTRACE_VERSION,否则您的探针将在 thing.h 中被注释掉。
D.构建探测目标文件(注意你必须包含 main.o 作为其中的一部分)
E.将所有内容联系起来
问题出在:运行应用程序,并使用 CTRL-C 终止(显然,由于无限循环,应用程序不会自行停止......)。
事实上,这样做几次。
现在,从超级用户终端:
这些家伙只是在闲逛......就像他们从未被取消注册一样。我已经运行“ps”来查看是否有任何带有这些 pid(28217、28403、28636)的过程,不,没有。
有趣的是,如果我从 main.cpp(sleep() 循环)中删除无限循环并让应用程序立即退出,那么探针就会被正确删除。因此,问题似乎与在 sleep() 内部检测到 CTRL-C 有关 - 也许某种 atexit() 处理程序没有被调用?
这是我的系统信息:
DTRACE 安装
我没有使用 Ubuntu 附带的默认 dtrace,而是使用我这样安装的 dtrace4linux 东西:
注意:我使用的是 Paul Fox 网站的最新版本:
xcode - 在 XCode 中创建自定义 Instrument 的教程
我想在 XCode 中创建自己的自定义 Instrument。不幸的是,我似乎找不到任何教程;我找到的唯一帮助是手册,在我看来这几乎不是独立的。有人知道教程吗?实际上,如果我可以检测一个自定义仪器(甚至是一个内置的),我已经很高兴了,因为如果我手头有一个例子,我可以更好地解决其余的问题。
如果它是相关的,我计划为 JAVA 构建一个时间/cpu 分析器。
kernel - dtrace:没有捕获任何写入系统调用
我是 dtrace 的新手,正在尝试编写一些基本的 dtrace 脚本。我找到了一个在单独的终端上捕获 read(2) 和 write(2) 系统调用的示例,如下所示,
指定的 pid 号来自其他终端的 pid id。当我看到这个例子时,如果我用 dtrace 运行这个脚本,它应该会显示一些读写系统调用。但我只观察到读系统调用,但没有观察到写系统调用。
因此,如果我理解正确,在我观察到的终端(pid 4217)上,如果我在该终端上键入某些内容,内核将读取它的字符,因此假设会发生读取系统调用。如果我输入“ls”之类的内容并回车,内核将读取并执行它,并将一些输出写入终端,因此编写系统调用假设被调用。但我没有看到任何写入系统调用。这是为什么?
linux - Dtrace 无效的探针说明符错误
我在 Ubuntu 11.04 中安装了 Dtrace。
我能够运行:
和:
命令正确并得到结果。
但是当我尝试运行时:
我收到错误消息:
dtrace
: 无效的探测说明符proc:::exec-success
{ trace(curpsinfo->pr_psargs); }:探针描述proc:::exec-success
不匹配任何探针。
这里有什么问题?我怎样才能解决这个问题?
objective-c - 在 DTrace 输出中显示 Objective-C 类
使用以下 DTrace 脚本,我可以获得接近我想要的输出:
我希望输出包含调用的类,所以它会像这样:
classX
正确的班级在哪里。
输出仍然应该是缩进的,并且只包含 Objective-C 消息而不是 C 函数调用。
macos - Dtrace 通过分布获取写入大小
我正在尝试按进程获取写入大小分布。我跑了:
并得到以下错误:
这是Mac OSX。请帮忙。
node.js - 使用 Dtrace 的 Node.js 分析未显示函数名称
我正在尝试使用 DTrace分析我的项目的 CPU 利用率。我只是按照脚本
问题是它不显示函数名称。该stacks.out
文件如下所示:
火焰图将十六进制(即“0x82474d1b”)显示为函数调用,而不是实际的函数名称。
我正在使用 OmniOS(基于 illumos 的操作系统)vagrant box r151002并这样做(https://gist.github.com/dalssoft/5595688)在 OmniOS 上构建 node.js 32bits。
有什么想法吗?
ios - Instruments 如何在没有 DTrace 的情况下从 iOS 收集数据?
我试图了解 XCode 仪器的内部工作原理。在 MacOS 上,它可以依靠 DTrace 收集各种分析数据。在 iOS 上,它也能做很多事情,但我反复读到 DTrace 还没有移植到 iOS。
那么这是如何工作的呢?
DTrace 上的 Apple 文档并没有告诉我太多关于这里的内部工作原理。然而,我注意到,当使用 Instruments 从 XCode 分析我自己的应用程序时,XCode 似乎以不同的方式构建它。这是否意味着它将一些独立的 DTrace 提供程序与我的代码相关联?
提前致谢!
/e:如果我能...
ruby - Ruby 2.0 中的新 Tracepoint API 是否使用 dtrace 使用的相同探针?
我花了一些时间学习如何使用 Dtrace 和 Ruby。然后在 Ruby 核心中为 2.0 找到了新的 TracePoint 类。TracePoint 是否使用与 dtrace 用于监视 ruby 执行的相同探针?