【发布时间】:2020-10-13 10:57:25
【问题描述】:
我想跟踪应用程序调用的所有函数。在这里,我不是在寻找系统调用,而是主要寻找库 API。
我已经尝试过 truss,它没有显示我期望的一些库 API。 solaris 中是否有任何工具,例如 linux 中的“ltrace”,可以跟踪库调用? dtrace 是否提供此信息?
【问题讨论】:
标签: debugging solaris trace dtrace truss
我想跟踪应用程序调用的所有函数。在这里,我不是在寻找系统调用,而是主要寻找库 API。
我已经尝试过 truss,它没有显示我期望的一些库 API。 solaris 中是否有任何工具,例如 linux 中的“ltrace”,可以跟踪库调用? dtrace 是否提供此信息?
【问题讨论】:
标签: debugging solaris trace dtrace truss
有两种方法可以得到你想要的:
sotrusssotruss 实用程序
索鲁斯
- 跟踪共享库过程调用
概要
/usr/bin/sotruss [-f] [-F bindfromlist] [-T bindtolist] [-o outputfile] executable [executable arguments...]说明
sotruss执行指定的命令并生成它执行的库调用的跟踪。跟踪输出的每一行报告在执行每个过程调用时动态对象之间发生的绑定。sotruss通过过程链接表跟踪动态对象之间发生的所有过程调用,因此仅跟踪通过过程链接表绑定的那些过程调用。见Linker and Libraries Guide选项
DTrace pid 提供程序
pid提供者
pid提供程序使您能够跟踪进程中的任何指令。 与大多数其他提供商不同,pid探针是根据需求创建的 在您的 D 程序中找到的探针描述上。结果,没有 pid 探测器在dtrace -l的输出中列出,直到您有 自己启用它们。用户函数边界追踪
pid 提供者最简单的操作模式是作为用户 类似于 fbt 提供程序的空间。下面的示例程序 跟踪所有函数条目和从单个的返回 功能。
$1宏变量(命令的第一个操作数 line) 是要跟踪的进程的进程 ID。$2宏 变量(命令行上的第二个操作数)是 跟踪所有函数调用的函数。...
另见Brendan Gregg's blog for some more DTrace information:
DTrace pid 提供程序
DTrace “pid” 提供程序允许您跟踪内部执行 Web 浏览器或数据库等进程。它记录在 原始 DTrace 指南和即将出版的 DTrace Book。它是 功能强大且不稳定,是您最有可能使用的提供商 用枪打自己的脚。
这里我将介绍pid提供者并讨论其稳定性 探测名称,包括提示和陷阱。这应该很有用 使用 DTrace 的任何人的背景,包括运行其他 人们基于 pid 提供程序的 DTrace 脚本。如需进一步阅读,请参阅 我的 pid 提供者帖子的完整列表。
【讨论】:
虽然 truss 默认只显示系统调用,但如果您使用 -u 选项来请求它们,它也可以显示库函数调用。 -u :: 将显示所有函数调用,或者您可以提供其他参数来过滤它显示的参数。
【讨论】: