c - 如何使用 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 个字符后切断输出,有没有办法禁用或增加该限制?
解决方案
推荐阅读
- typescript - 如何在 TypeScript 中使用扩展运算符
- bash - 如何使用Shell脚本剪切没有逗号的数据以分隔变量
- r - R中的多个条件不起作用的问题
- java - Java反射遍历嵌套对象并列出并更新字段
- c++ - C++ - 向量<> 中的 std::unique_ptr 为 nullptr
- javascript - 根据其悬停的页面部分的背景更改固定导航栏的类
- java - 计算RecyclerView显示的item个数,放到一个TextView中
- java - 使用 VM 选项读取路径中的属性文件
- python-3.x - 尝试在python中列出字典键错误时出错,列表对象不可调用?
- tfs - 如何使用 VS Release Management(本地 TFS)设置文件复制到 FTP 服务器