dtrace相关内容

使用dtrace跟踪系统调用

我正在运行一个进程ID为 423 的应用程序.基本上想调试这个过程. 问题是,使用命令 sudo dtruss -a -t open_nocancel -p 423 我看不到打印消息已执行,而且 sudo kill -30 423 之类的系统信号似乎也没有显示在堆栈中痕迹.我想念什么吗?我该如何实现呢? 下面的示例堆栈跟踪 PID/THRD相对ELAPSD CPU SYSCALL( ..
发布时间:2021-05-31 19:24:30 其他开发

dtrace:不会捕获任何写系统调用

我是dtrace的新手,正在尝试编写一些基本的dtrace脚本.我找到了一个在单独的终端上捕获read(2)和write(2)系统调用的示例, syscall::read:entry, syscall::write:entry /pid==4217/ { } 指定的pid编号来自另一个终端的pid ID.当我看到示例时,如果我使用dtrace运行此脚本,它应该显示一些读写sy ..
发布时间:2021-02-14 21:09:41 其他开发

是否可以从DTrace隐藏OS X应用程序?

我正在开发OS X应用程序,我想对它进行隐瞒.我知道P_LNOATTACH标志,但是我读过的所有内容都告诉我它周围有办法.有可能吗? 解决方案 是的,有可能.尝试在iTunes上运行DTrace;它不起作用. 您必须使用PT_DENY_ATTACH调用ptrace函数. http://developer.apple.com/library/mac/#documentation/ ..
发布时间:2020-06-12 19:33:55 其他开发

如何激活sh DTrace Provider?

我发现了有关但是我在OS X上找不到任何探针.我通过以下方式进行检查: $ sudo dtrace -l | grep command-entry 请参见:/bin/sh DTrace Provider (在Oracle网站上(博客) 也许是因为我的sh与GNU bash相同? $ /bin/sh --version GNU bash, version 3.2.57(1)-r ..
发布时间:2020-06-12 19:33:51 其他开发

在OS X应用程序中查找文件描述符泄漏

背景 我有一些非常复杂的应用程序.它是情侣库的组成. 现在,质量检查小组发现了一些问题(某些东西报告错误). Fromm日志我可以看到应用程序正在泄漏文件描述符(自动测试7小时后+1000). 质量检查小组已经从“活动监视器"提供了融洽的“打开的文件和端口",我确切地知道没有关闭与哪个服务器的连接. 从完整的应用程序日志中,我可以看到泄漏是非常系统的(没有突然的爆发),但是我无法重现 ..
发布时间:2020-06-12 19:33:48 其他开发

Dtrace中的局部变量

如何使用dtrace访问函数局部变量? 例如,在以下代码段中,我想使用dtrace知道变量x的值. void foo(int a){ int x=some_fun(a); } 解决方案 对于内核代码来说,跟踪局部变量是不可能的,因为没有机制可以检测任意内核指令.甚至在用户领域,跟踪局部变量也有些复杂,因此,对于您给出的特定示例,改为跟踪some_fun()的返回值会更有 ..
发布时间:2020-06-12 19:33:46 其他开发

Dtrace打印父进程命令

我想要一个脚本,该脚本为每个新运行的进程打印其启动命令及其父进程. 我正在使用以下探针: proc::posix_spawn:exec-success,proc::__mac_execve:exec-success 在脚本正文中,命令行字符串是从curproc->p_dtrace_argv构建的. parent pid(ppid)也可用,但是到目前为止,我还没有弄清楚如何提取 ..
发布时间:2020-06-12 19:33:41 其他开发

如何将日志写入btrace中的文件?

我有以下 btrace 脚本.我想记录特定类中函数的进入和退出. .. package com.sun.btrace.samples; import com.sun.btrace.BTraceUtils; import com.sun.btrace.Profiler; import com.sun.btrace.annotations.*; @BTrace class Profiling ..
发布时间:2020-06-12 19:33:39 Java开发

如何在DTrace操作中打印CFStringRef?

我有一个DTrace探针来捕获对函数的调用,该函数的参数之一是CFStringRef.这是一个私有结构,其中包含一个指向unicode字符串的指针.但是CFStringRef本身并不是char*,因此普通的DTrace方法(例如copyinstr())仅返回?cp?,这并不是完全有用. 那么如何在DTrace操作中打印出字符串? 解决方案 据我所知,这种类型的东西没有内置的支持.通常 ..
发布时间:2020-06-12 19:33:28 其他开发

如何在不以超级用户身份运行的情况下从头开始跟踪程序

我正在编写一个调用DTrace的工具,以跟踪用户指定的程序. 如果我的工具使用dtrace -c作为DTrace的子进程运行该程序,则不仅不能将任何参数传递给该程序,而且该程序还具有DTrace的所有特权-即以root身份运行(在Mac OS X上).这使得某些应该工作的事情中断了,并且显然使很多不应该工作的事情成为可能. 我知道的另一种解决方案是自己启动程序,通过发送SIGSTOP暂 ..
发布时间:2020-06-12 19:33:26 其他开发

插入OS X系统调用

我需要插入(调用我的函数而不是原始函数)一些OS X系统调用来克服一个封闭源代码软件中的缺陷. 最好,最终的解决方案可以在10.5(Leopard)及更高版本下工作,但如果论点足够强大,我 可能可以要求10.6(Snow Leopard). 最好,最终的解决方案将是可执行文件,但我可能会选择脚本. 最好,即使在目标应用程序运行后,生成的解决方案也可以插入(“窃取向量"),但是我可 ..

有没有解决方法:"dtrace无法控制以受限权利签名的可执行文件"?

在OS X 10.11 El Capitan中,看来dtruss和dtrace不能再执行其应做的工作.这是我尝试运行sudo dtruss curl ...时得到的错误: dtrace:无法执行curl:dtrace无法控制以受限权利签名的可执行文件 我遇到了注意到这一问题的人,但到目前为止还没有解决方案. 是否可以解决此问题或解决此问题? 解决方案 一旦您csrutil ..
发布时间:2020-06-12 19:33:19 其他开发

使用DTrace在调用堆栈树中检测冗余函数调用

在一个相当复杂的算法中,我很难追踪不必要的冗余呼叫. 我的算法(某些)似乎因非缓存且相对昂贵的函数的冗余调用(在多个子例程中)而严重减慢了速度. 为了确认这一点,我想利用Dtrace检测调用堆栈树的给定分支内单个函数的多个调用. 我想问一下dtrace: 在给定函数(此处为"foo();",请参见附件)内的调用堆栈树中搜索重复的函数调用(例如,"c();") 使用各自的通话 ..
发布时间:2020-05-21 21:27:59 其他开发

是否可以将动态生成的代码通知Mac OS X上的DTrace?

我们想扩展Mono的VM,以生成可供 DTrace 和工具使用的信息 我正在考虑对Mono运行时进行更改,以使其注册或通知它已动态生成的代码,以便DTrace可以为这些代码块生成有用的信息. 解决方案 您要包含哪些信息? 执行此操作的主要示例是ustack助手,它们从VM传递到DTrace,如何将堆栈帧转换为人类可读的帧.这些已经存在于Python,Java和Node.js. ..
发布时间:2020-05-11 22:40:23 其他开发