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

c - 列出对我的图书馆的所有调用

我正在用 C 语言构建一个共享库,其他程序使用它。有时,这些其他程序由于我的共享库中的一些错误而崩溃。在重现这些错误时,了解正在调用我的库的哪些函数、使用哪些参数以及以什么顺序调用对我来说非常有用。当然,我可以printf()向所有函数添加调用,或者向所有函数添加断点,但我认为必须有更好的方法来确定这一点。

编辑:因为我在 OSX 上这样做,dtrace和相关的脚本dapptrace似乎很有希望。但是,在浏览了一些文档之后,我仍然有点迷茫。

比如说,我的库是/path/to/libmystuff.so并且我有一个链接到该库的程序测试。使用dtrace,我将如何显示驻留在libmystuff.so中的所有函数调用的列表?

0 投票
2 回答
453 浏览

java - Java 的 DTrace 可以用于 Windows 等非 Unix Like OS 吗?

Java6提供的DTrace特性可以在Windows上使用吗?

0 投票
1 回答
214 浏览

macos - 请问dtrace启用了哪些探针?

如果重要的话,我使用的是 Mac OS X,但我相信这将适用于整个操作系统。如果每个操作系统的答案不同,我也会有兴趣了解这一点。

假设我打开一个终端窗口,启用一些探针,然后开始使用 DTrace 收集数据。

我可以从不同的终端窗口询问 DTrace 启用了哪些探测器?如果是这样,怎么做?

0 投票
1 回答
355 浏览

macos - 如何了解 DTrace 的内核变量?

我只对与 Mac OS X 相关的答案感兴趣,因为我认为答案会因操作系统而异。

例如,Apple 在本文档中提到了内核变量 avenrun 。我知道还有更多,我相信可以通过以下方式生成完整的列表:

但是,仅列出名称并不能告诉我有关变量结构或如何使用它们的任何信息。

我想知道的是如何去了解可用的内核变量、如何使用它们以及如何使用它们。

0 投票
1 回答
831 浏览

objective-c - 是否可以在 dtrace 中获取 objc 方法的结果?

我写了一个动作,当任何 objc 方法返回时触发(objc:::return)。现在,我需要获取返回值。可能吗?

0 投票
1 回答
171 浏览

objective-c - 如何在没有系统方法或系统框架的情况下在 Mac OS X 上使用 DTrace 进行检测?

如何只使用DTrace打印用户定义的类和方法,而不使用系统类、方法,例如 NSLock、NSThread、NSObject 等?

使用以下 D 代码,它可以跟踪所有的 Objective-C 方法,包括系统和用户定义的方法:

0 投票
1 回答
427 浏览

optimization - 使用 DTrace 检测调用堆栈树中的冗余函数调用

我很难在一个相当复杂的算法中追踪不必要的冗余调用。

看起来(我的一些)我的算法被非缓存且相对昂贵的函数的冗余调用(在几个子例程中)严重减慢了。为了确认这一点,我想利用 Dtrace 来检测调用堆栈树的给定分支内单个函数的多个调用。

我希望能够要求 dtrace:

  • 在给定函数(此处,见附图)中搜索调用堆栈树以"foo();"查找重复的函数调用("c();"例如)

  • 用他们各自的通话次数记录他们(这里:3x for "c();"

如果可能的话

  • 记录每次出现的调用堆栈 ( "foo()/a()/c()", "foo()/a()/b()/c()", "foo()/a()/b()/d()/c()")。

这可能吗?如果是的话,知道怎么做吗?

提前致谢!

在此处输入图像描述

注意:尽管我的代码实际上是在 Objective-C 中,但我在示例代码中使用了 C,但这种事情应该与语言无关,不是吗?至少一般的方法/想法。

0 投票
3 回答
4832 浏览

debugging - 跟踪所有函数调用并打印出它们的参数(用户空间)

我想看看在我的用户空间 C99 程序中调用了哪些函数以及调用的顺序。另外,给出了哪些参数。

我可以用 DTrace 做到这一点吗?

例如对于程序

我想看到一个文本文件:

我不想修改我的源代码,而且程序真的很大——有 9000 个函数。

我有所有来源;我有一个编译了调试信息的程序,gdb 能够在回溯中打印函数参数。

DTrace 可以解决这个任务吗?

我的操作系统是 BSD、Linux、MacOS、Solaris 之一。我更喜欢 Linux,但我可以使用任何列出的操作系统。

0 投票
3 回答
1280 浏览

macos - DTrace 按键记录器

我试图查看是否可以让 Brendan Gregg 的 sshkeysnoop.d 在 Mac OS X 上运行,但遇到了麻烦。有可能让这个工作吗?如果是这样,怎么做?

我得到的错误是:

是否可以使用 DTrace 在 Mac OS X 上进行任何其他类型的键记录?

0 投票
1 回答
1356 浏览

macos - 如何在 OSX 上使用 D-trace 获取命令参数

我正在尝试使用带有 D-trace 的 args 预览运行命令。我试过这样的事情:

但在 OSX 上,此代码仅返回命令名称而不是它们的参数。

我找到了这个论坛帖子,但最后一个答案中的代码对我不起作用。