问题标签 [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.

0 投票
1 回答
468 浏览

macos - DTrace 脚本从不报告写入系统调用

我正在使用以下 DTrace 脚本来跟踪 bash 的读写系统调用:

它成功匹配了 2 个探针,但无论我输入什么,我都只看到读取调用。没有报告写调用。当 shell 回显到屏幕时,我期待收到 write 调用。

脚本是错误的,还是我对 bash 的工作原理有错误的假设?

我在 OSX Mountain Lion 下运行

0 投票
0 回答
219 浏览

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 网站的最新版本:

0 投票
1 回答
964 浏览

xcode - 在 XCode 中创建自定义 Instrument 的教程

我想在 XCode 中创建自己的自定义 Instrument。不幸的是,我似乎找不到任何教程;我找到的唯一帮助是手册,在我看来这几乎不是独立的。有人知道教程吗?实际上,如果我可以检测一个自定义仪器(甚至是一个内置的),我已经很高兴了,因为如果我手头有一个例子,我可以更好地解决其余的问题。

如果它是相关的,我计划为 JAVA 构建一个时间/cpu 分析器。

0 投票
2 回答
336 浏览

kernel - dtrace:没有捕获任何写入系统调用

我是 dtrace 的新手,正在尝试编写一些基本的 dtrace 脚本。我找到了一个在单独的终端上捕获 read(2) 和 write(2) 系统调用的示例,如下所示,

指定的 pid 号来自其他终端的 pid id。当我看到这个例子时,如果我用 dtrace 运行这个脚本,它应该会显示一些读写系统调用。但我只观察到读系统调用,但没有观察到写系统调用。

因此,如果我理解正确,在我观察到的终端(pid 4217)上,如果我在该终端上键入某些内容,内核将读取它的字符,因此假设会发生读取系统调用。如果我输入“ls”之类的内容并回车,内核将读取并执行它,并将一些输出写入终端,因此编写系统调用假设被调用。但我没有看到任何写入系统调用。这是为什么?

0 投票
1 回答
4046 浏览

linux - Dtrace 无效的探针说明符错误

我在 Ubuntu 11.04 中安装了 Dtrace。

我能够运行:

和:

命令正确并得到结果。

但是当我尝试运行时:

我收到错误消息:

dtrace: 无效的探测说明符proc:::exec-success{ trace(curpsinfo->pr_psargs); }:探针描述proc:::exec-success不匹配任何探针。

这里有什么问题?我怎样才能解决这个问题?

0 投票
2 回答
1533 浏览

objective-c - 在 DTrace 输出中显示 Objective-C 类

使用以下 DTrace 脚本,我可以获得接近我想要的输出:

我希望输出包含调用的类,所以它会像这样:

classX正确的班级在哪里。

输出仍然应该是缩进的,并且只包含 Objective-C 消息而不是 C 函数调用。

0 投票
1 回答
207 浏览

macos - Dtrace 通过分布获取写入大小

我正在尝试按进程获取写入大小分布。我跑了:

并得到以下错误:

这是Mac OSX。请帮忙。

0 投票
1 回答
562 浏览

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。

有什么想法吗?

0 投票
1 回答
1694 浏览

ios - Instruments 如何在没有 DTrace 的情况下从 iOS 收集数据?

我试图了解 XCode 仪器的内部工作原理。在 MacOS 上,它可以依靠 DTrace 收集各种分析数据。在 iOS 上,它也能做很多事情,但我反复读到 DTrace 还没有移植到 iOS。

那么这是如何工作的呢?

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

提前致谢!

/e:如果我能...

0 投票
1 回答
269 浏览

ruby - Ruby 2.0 中的新 Tracepoint API 是否使用 dtrace 使用的相同探针?

我花了一些时间学习如何使用 Dtrace 和 Ruby。然后在 Ruby 核心中为 2.0 找到了新的 TracePoint 类。TracePoint 是否使用与 dtrace 用于监视 ruby​​ 执行的相同探针?