问题标签 [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.
c - dtrace - 从调用函数的不同位置传递到函数的变量的聚合
抱歉标题过于复杂,但这是我的脚本的 dtrace 输出,我认为这将有助于解释我在说什么:
dtrace 脚本是:
FuncXXX 有签名:void FuncXXX(void *arg, long int p, int q);
现在,我想聚合变量p
and q
,但是按照调用 FuncXXX 的顺序,例如:
有可能吗?或者我应该独立地追踪FirstFunc
、、SecondFunc
和?但问题是,在所有这些函数中,不能总是被调用。ThirdFunc
FourthFunc
FuncXXX
最好的问候和所有答案。
macos - DTrace END 探针从不触发
我有一台 2009 年中期的 MacBook Pro 和一台新的 2012 MacBook Pro,我正在学习 DTrace(一个非常棒的工具)。当我在新的 2012 MBP 上计算聚合时,聚合不会打印出来。
在我的 2009 年中期 MBP 中,它显示如下:
2012 MBP 没有显示任何内容。
我在 BEING 和 END 探针中添加了一个 printf,以查看 END 探针是否会像这样触发:
在 2009 年中期的 MBP 上,两个探头都发射并打印了,而在 2012 MBP 上,只有 BEGIN 探头发射了。END 从未触发过。
两个 MBP 都运行 Lion 10.7.3。我不确定下一步该尝试什么。现在想到的唯一区别是我没有在 2012 MBP 上安装开发人员命令行工具。但这对我来说没有意义,而且是在黑暗中拍摄的。
任何帮助或想法将不胜感激。谢谢。
=============[已启用根帐户]====================
所以我启用了root帐户并重新运行了命令
没有成功,但如果我这样做
有用!
=============[ kill -s INT ]=============================
我做了更多的实验。如果我运行:
一切正常并显示输出。
如果我运行:
这也有效!
但是如果我在终端中使用 control-c,它不会显示输出。
control-c 和 kill -s INT 有什么区别?
javascript - 使用 DTrace 分析 Node.js
我目前正在分析我的 node.js 应用程序。我发现了这个博客: http: //blog.nodejs.org/2012/04/25/profiling-node-js/建议我应该使用 Dtrace。我使用此处给出的步骤在 ubuntu 12.04 上安装了 dtrace:https ://askubuntu.com/questions/60940/how-do-i-install-dtrace
但是,当我在节点应用程序运行时在终端中运行此命令时:
stacks.out 保持空白,除了:CPU ID FUNCTION:NAME 1 387695 :tick-60s
有什么建议可能是错的吗?
c - opensolaris 上的 dtrace libc 探针
当我尝试跟踪 getenv 函数时,我得到了:
来自 myapp 的 ldd:
为什么会这样?是否有任何解决方案可以使 libc 函数能够通过 dtrace 进行跟踪?
此致
c - dtrace 从应用程序访问全局变量
假设我的应用程序代码如下所示:
现在,您能告诉我,是否可以global_var
在 dtrace 脚本中访问并打印它?
最好的祝福
macos - 插入 OS X 系统调用
我需要插入(调用我的函数而不是原始函数)一些 OS X 系统调用来克服一个闭源软件中的缺陷。
最好,得到的解决方案可以在 10.5(Leopard)和更新版本下工作,但如果论点足够强,我可能需要 10.6(Snow Leopard)。
最好是生成的解决方案是一个可执行文件,但我可能会选择一个脚本。
最好,即使在目标应用程序运行之后,所得到的解决方案也能够插入(“窃取向量”) ,但我可以接受一种必须在应用程序加载时注入自身的技术。
最好用 C 或 C++ 开发最终的解决方案,但我可以满足于 Objective-C 或其他东西。
到目前为止,我已经尝试过:
1) DTrace脚本,它教会了我很多东西,但是 D 语言的局限性(有限的流量控制等)使它成为我正在做的事情的主要痛苦,更不用说结果将是一个脚本,这不像我所追求的那样整洁和独立。
2) DYLD_INSERT_LIBRARIES插入,这在很多方面都很巧妙,但可能是由于命名空间扁平化(我不会假装深入理解这意味着什么),它可以很好地处理更简单的可执行文件,但是即使我构建了目标应用程序也会让我的目标应用程序窒息一个什么都不做的库,实际上不插入任何调用。
我最新的想法是尝试mach_star ( https://github.com/rentzsch/mach_star ),但我先在这里停下来,询问 Stack Overflow 社区,它总是比我知道的更多......
...接下来我应该看看除了 mach_star 之外的东西吗?
dtrace - DTrace - 如何在返回探针中正确检索初始参数
我正在尝试读取在我的返回探针中传递给函数的初始参数。与入口探针不同,返回探针中的参数变量( arg0
, arg1
,...) 不包含初始参数,我不确定如何检索这些值。
另外,由于并发问题,我想避免将值存储在全局变量中。
macos - 需要有 Mac OS X Mountain Lion 的人吗?UDP 探针
如果您有 Mac OS X Mountain Lion,您可以在终端屏幕上写入“sudo dtrace -ln udp:::”并为我复制结果吗?
我需要了解是否可用于新操作系统的 UDP 探测。
先感谢您。
c - 使用 dtrace 分析 C 代码
我正在通过 stackoverflow 寻找最佳的分析技术。
我有一堆 24/7 运行的进程,用 C 语言编写并使用 Oracle 10g。我发现了几个我想尝试的工具:oprofile、strace、systemtap 和 dtrace。
我想从 dtrace 开始,因此我一直在寻找一些简单的 dtrace 脚本,它将连接到正在运行的进程'并打印出所有函数调用,每个函数所花费的时间......也许是调用图。
请建议一些好的脚本开始,任何链接,教程,手册。