标签: dtrace

启用探针时出错:syscall::open_nocancel:entry):DIF 中操作 #2 中的无效用户访问

我有以下单行显示进程打开的文件:

sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
Run Code Online (Sandbox Code Playgroud)

但是我有很多重复的错误,例如:

dtrace: error on enabled probe ID 4 (ID 946: syscall::open_nocancel:entry): invalid user access in action #2 at DIF offset 24

dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #2 at DIF offset 24

我知道我可以通过重定向到2> /dev/null.

这些错误意味着什么以及它们为什么会发生?

dtrace错误还是某些特定过程导致了这种情况?以及如何解决这个问题?

我使用的是 OS X 10.11.2

osx kernel dtrace

13
推荐指数
1
解决办法
6482
查看次数

测量正在运行的进程的磁盘 IO 延迟

我正在尝试测量正在运行的进程的磁盘 IO 延迟以制作直方图。

我可以在提供它的操作系统中使用 DTrace 做到这一点(例如在这篇 Joyent 论文中),但我的应用程序在 Linux 中运行。我的第一个想法是尝试perf,我可以得到计数器,但我找不到任何方法来获取时间增量。我可以使用strace(例如strace -e read -T)获取时间增量,但我不确定是否可以将跟踪限制为磁盘 IO(该系统也有一个繁忙的网络接口)。

有没有办法在 Linux 中做到这一点?

linux perf-event strace dtrace

7
推荐指数
1
解决办法
8058
查看次数

DTrace 捕获应用于某些文件的任何 chmod

在 Mac OS X 目录下,/audit我有一些用户可以chmod根据自己的喜好访问的文件。

我需要chmod通过记录时间、用户和文件来审核对任何文件所做的任何事情chmod,尤其是后者。

我可以dtrace -n 'syscall::chmod:entry'并检测到事件,如何读取第一个参数chmod

man 2 chmod 告诉我路径在第一个参数中:

chmod(const char *path, mode_t mode);
Run Code Online (Sandbox Code Playgroud)

但我怎么读args[0]?我想我这样做是错误的。也许条目与实际的系统调用不对应?

如果我有一个可以监控的探针,我如何检查它提供哪些参数供访问以及它们是什么类型?我假设一些指针需要根据它们的数据布局取消引用..

osx monitoring system-calls dtrace

6
推荐指数
1
解决办法
633
查看次数

在 OS X 上查找 CoW 页面错误的根源

我正在尝试在 OS X 上的某些 C 代码中找到 CoW 页面错误的来源。我想使用vminfo DTrace 提供程序,但vminfo在 OS X 上不可用。在 Linux 上,我可以使用 SystemTap 打印堆栈跟踪 CoW 故障。有没有办法在 OS X 上做到这一点?

memory dtrace

6
推荐指数
1
解决办法
1031
查看次数

标签 统计

dtrace ×4

osx ×2

kernel ×1

linux ×1

memory ×1

monitoring ×1

perf-event ×1

strace ×1

system-calls ×1