首页 > 解决方案 > 如何使用 dtrace 查看读写调用(包括 \n 等隐藏字符)

问题描述

我是 dtrace 的新手,以前在 Linux strace 中默认跟踪我需要的一切。如何从正在运行的 C 程序跟踪读取和写入调用以在 dtrace 上工作?

我在这里看到了答案:dtrace: doesn't catch any write sys call,但是它并不能完全帮助我。

我添加了来自https://docs.oracle.com/cd/E18752_01/html/819-5488/gcgkk.html的 printf 语句,当前代码为: sudo dtrace -n 'syscall::read:entry, syscall::write:entry/pid==10325/{printf("%s",copyinstr(arg1)); }',其中 pid 是我要跟踪的进程。

但是,这会将其打印为字符串,而不是字节形式。有没有办法查看整个内容,包括隐藏字符,如 \r 和 \n?这是在 strace 中完成的方式。

此外, write:entry 似乎会在大约 150-200 个字符后切断输出,有没有办法禁用或增加该限制?

标签: cbashmacosdtrace

解决方案


推荐阅读