问题标签 [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.
linux - Ubuntu 上的 DTrace,操作方法?
我想在 Ubuntu 上使用 DTrace。
https://github.com/dtrace4linux/linux
上面有一个用于 Linux 的,github。
- 我想知道 linux 的 dtrace 是否与其他操作系统(Solaris、FreeBSD、OSX)的 dtrace 相同。
- 我想找到一个使用这个(dtraceforlinux)的教程。
- 我想知道下面的 dtrace for solaris 教程是否适合我。
http://www.oracle.com/technetwork/server-storage/solaris/dtrace-tutorial-142317.html
先感谢您。旅者
dtrace - 如何使用 dtrace 检测文件传输
我想使用“dtrace”来跟踪 OSX 10.8 中的文件传输,例如运行命令“mv /folder1/file1 /folder2”时。
我知道有像 create/link/unlink/rename/chdir 这样的探针可以以以下形式使用
dtrace -n 'syscall::create:entry { printf("%s %s", execname, copyinstr(arg0)); }'
但是如何跟踪这个“mv”命令?
monitoring - 返回按区域聚合的 %CPU、%Memory 和网络输入/输出的 Dtrace 脚本
我需要一个 DTrace 脚本,它返回 CPU 使用百分比、内存使用百分比和使用的网络输入和输出字节,按区域聚合数据。像这样的东西:
到目前为止,我正在使用:
返回类似的东西(没有网络流量):
我需要得到相同的结果,但使用 DTrace 完成,以便将数据与网络流量相结合,并在未来进行更多探测。
process - 如何使用 dtrace 显示每个进程消耗的微秒 cpu?
在 Solaris 上使用 dtrace,我可以使用以下脚本在从 start 到 control-C 的时间间隔内为给定进程(或 execname)累积 on-cpu 时间:
(累积时间具有细粒度,允许纳/微秒累积。)
在同一时间范围内,我想在一个数组中累积所有或多个进程,并报告所有累积的 CPU 中断时间 (^C)。
做这个的最好方式是什么?
macos - DTrace:在 OS X 上跟踪用户堆栈大小?(curthread->t_procp->p_stksize?)
我遇到了这个用于跟踪用户堆栈大小的简单 DTrace 脚本,但它在 OS X Mountain Lion 上不起作用:
(来自: http: //www.solarisinternals.com/wiki/index.php/DTrace_Topics_One_Liners)
在 OS X 上返回的错误是:
确实,我很难弄清楚 OS X 上“curthread”的有效成员是什么。是否有等效的方法可以深入了解线程的当前用户堆栈大小?或者“curthread”只是 OS X 上的一个不透明指针,仅可用于线程识别?请注意,如果有帮助的话,我很乐意通过“pid”提供程序进行此跟踪。
谢谢!
macos - OSX 上的 32 位 DTrace
我需要在 OSX 上的 32 位可执行文件上运行 DTrace。我有两台机器,都运行 OSX 10.8.2。其中一个/usr/lib/dtrace/libdtrace_dyld.dylib
是胖二进制文件,另一个不是:
对比
这两个是哪里来的?我如何“正式”获得胖子,即不只是从另一台机器上复制它?
这就是当我尝试在 32 位可执行文件上运行 dtrace 时会发生这种情况,并且只能使用 64 位 dylib,顺便说一句:
macos - 如何监控进程的任何输入和输出
有以下进程: NetAuthSysAgent 重复调用/创建一个不存在的 NFS 共享的进程 mount_nfs。我有一种预感,这些调用是由另一个给出指令的进程触发的。
因此,我想分析 NetAuthSysAgent,可能使用 dtrace,并查看该进程的所有输入(如 IPC,包括信号、队列、文件、套接字等),并在调用 mount_nfs 之前验证所有读取文件或内存区域过程。
我怎样才能做到这一点?dtrace 是否合适,如果合适,如何?
欢迎任何帮助。即使它只能在 FreeBSD 或 Solaris 上应用/工作,我也可以尝试自己将其适应 OS X。
更新:
我一直在使用以下命令,但我只介绍了文件部分:
上面的命令给了我进程和打开的文件。
上面的命令是一个调用 DTrace 的脚本,它与前面的命令大致相同,但它被进程 NetAuthSysAgent 过滤并提供了更多信息(例如 UID、PID、FD 等)
cocoa - 如何从 DTrace 脚本打印 NSString
这个问题问的是同样的事情,但是当我尝试时:
它没有用。arg2 应该是 NSString 的地址。我有:
NSWindow -setTitle: 100685240 7fff92d82f73 7fff78a6eb80 string addr = 7fff8e7e83b9 string val=Window dtrace: 启用探针 ID 5 上的错误 (ID 35737: objc9434:NSWindow:-setTitle::entry): 无效地址 (0x6c007400690074) 在 DIF 偏移量 #8 24
您可以假设 NSString 的 MacRoman 或 ASCII 编码 - 基本上无需担心复杂的(从 DTrace 角度来看)编码。
linux - DTrace for Linux ustack() 操作中的无效地址
当我使用 DTrace for Linux 运行以下 .d 脚本时:
我收到许多以下类型的错误:
我应该怎么做才能修复它们?
dtrace - 如何使用 dtrace 确定进程的最大内存使用量
以下 dtrace 脚本将给出进程已执行的所有分配的总和:
现在,我对进程生命周期内的最大总分配内存使用量(大约 50 毫秒)很感兴趣。如何生成随时间推移的总分配内存使用量图表(所有 malloc 的总和减去所有空闲的总和),或者只是它的最大值。我尝试手动跟踪所有分配的内存块,但超出了 dtrace 关联数组大小限制。