问题标签 [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 投票
4 回答
1512 浏览

dtrace - 从 DTrace 脚本调用 C 函数

DTrace是令人印象深刻的强大的跟踪系统,最初来自 Solaris,但它被移植到 FreeBSD 和 Mac OSX。

DTrace 使用称为 D 的高级语言,与 AWK 或 C 不同。下面是一个示例:

使用命令行sudo dtrace -q -s <name>.d <pid>记录所有源自该进程的 IO。

我的问题是,是否以及如何可以从 DTrace 脚本调用自定义 C 函数,以便在跟踪本身期间对该跟踪数据执行高级操作。

0 投票
1 回答
1153 浏览

macos - 如何在 Mac OS X 上构建 DTrace?

我正在尝试使用此处的建议在 Xcode 项目中构建 dtrace 目标:

http://osx86.boeaja.info/2009/10/building-xnu-kernel-on-snow-leopard/

但我得到:libproc.m:24:49: error: CoreSymbolication/CoreSymbolication.h: No such file or directory

我意识到 CoreSymbolication 是一个私有框架,但 Apple 必须在某处提供此标头以便我构建 dtrace,对吗?有人可以指出构建 dtrace 所需的文件吗?

0 投票
2 回答
2315 浏览

arrays - 如何在 DTrace 中打印关联数组?

这个问题几乎概括了它。“dtrace 'print an associative array'” 只在谷歌上出现了一次,类似的搜索同样没用。

编辑:

如果我要使用聚合,我不知道我仍然能够删除条目。我的应用程序要求我能够执行以下操作:

我知道您可以清除整个聚合,但是单个条目呢?

更新:

由于我在 OS X 中执行此操作,并且我的应用程序是跟踪已由特定进程打开的所有文件描述符,因此我能够拥有一个包含 256 个路径名的数组,因此:

糟透了。我真的很想拥有更好的东西。

0 投票
3 回答
2479 浏览

.net - .Net 是否有等效的 dtrace

dtrace 是否有 .Net 等价物或类似物?

0 投票
1 回答
948 浏览

macos - Mac OS X 上是否有 dtrace ustack() 助手?

我一直想知道是否有机会在 Mac OS X 上为 python 和其他解释语言使用 dtrace ustack 助手?我知道当给 ustack 一些额外的内存作为缓冲区时,你可以弄清楚 OpenSolaris 上的 python 和 php 在做什么。这在 Mac OS X 上可能吗?

问候 raichoo

0 投票
8 回答
23423 浏览

macos - 如何让 dtrace 以非 root 权限运行跟踪的命令?

OS X 缺少 linux 的strace,但它dtrace应该更好。

但是,我想念对单个命令进行简单跟踪的能力。例如,在 linux 上,我可以写strace -f gcc hello.c来捕获所有系统调用,这给了我编译器编译我的程序所需的所有文件名的列表(优秀的memoize脚本就是建立在这个技巧上的)

我想在 mac 上移植 memoize,所以我需要某种strace. 我真正需要的是gcc读取和写入的文件列表,所以我需要的是更多的truss. 果然我可以说dtruss -f gcc hello.c并获得一些相同的功能,但是编译器以root权限运行,这显然是不可取的(除了巨大的安全风险之外,一个问题是该a.out文件现在由root拥有:-)

然后我尝试dtruss -f sudo -u myusername gcc hello.c了,但这感觉有点不对劲,无论如何都不起作用(我一直没有a.out文件,不知道为什么)

这么长的故事试图激发我最初的问题:我如何才能像在 linux 中dtrace那样以普通用户权限运行我的命令?strace

编辑:似乎我不是唯一一个想知道如何做到这一点的人:问题#1204256与我的几乎相同(并且具有相同的次优 sudo 答案:-)

0 投票
3 回答
450 浏览

virtual-memory - 当页面从磁盘出现故障时,哪个(OS X)dtrace 探针会触发?

我正在写一个关于页面错误的文档并试图获得一些具体的数字来使用,所以我编写了一个简单的程序来读取 12*1024*1024 字节的数据。简单的:

所以是的,它会遍历并读取整个文件。问题是我需要在此过程中将触发 1536 次的 dtrace 探针(12M/8k)。即使我计算了所有 fbt:mach_kernel:vm_fault*: 探测器和所有 vminfo::: 探测器,我也没有达到 500,所以我知道我没有找到正确的探测器。

任何人都知道我在哪里可以找到当页面从磁盘出现故障时触发的 dtrace 探测器?

更新:

如果问题在于 stdio 函数中正在进行一些智能预取,我尝试了以下操作:

这个版本需要更长的时间来运行(42 秒实时,其中 10 秒是用户时间,其余是系统时间 - 我猜是页面错误),但仍然会产生五分之一的错误,正如我预期的那样。

出于好奇,时间增加并不是由于循环开销和强制转换(char 到 int)。执行这些操作的代码版本需要 0.07 秒。

0 投票
2 回答
1226 浏览

dtrace - DTrace:如何打印出内存缓冲区

我需要跟踪对某个特定文件所做的所有 pwrite(2) 调用并打印所有要逐字节写入的缓冲区。预期的数据不是 ASCII 字符串格式,所以我不能使用:

我了解了 copyin(arg1, arg2),但这给了我一个 void* 并且我发现的所有示例都通过调用 stringof 将它再次转换为字符串,例如:

我需要的是以某种方式显示复制缓冲区中的所有字节。有什么建议么?

谢谢你,英索。

0 投票
1 回答
429 浏览

apache2 - 在 FreeBSD 上的 Apache 上启用 dtrace

嗨,我正在使用 freeBSD 作为我的操作系统。我安装了 apache 2.2.16 版。我想启用这个 dtrace。我该怎么做。提前致谢

0 投票
0 回答
1555 浏览

visual-studio - Xcode Instruments - Windows 的等价物?

Xcode 的 Instruments 让我在身体上感觉我会。它们基于 DTrace——它在 Windows 中有一些松散的等价物——但 Apple 为它们制作的 GUI 使它们可以日常使用。

Visual Studio 似乎没有与之竞争的工具。它尝试了一个需要大量命令行 mojo 和解析文本转储的分析器。相比之下,Compuware 工具套件实在是太糟糕了。

Xcode 的 Instruments 功能强大且易于使用,除了 windows 之外,没有其他东西了吗?