Oracle® Solaris Studio 12.4:性能分析器

退出打印视图

更新时间: 2015 年 1 月
 
 

共享对象处理

通常,collect 命令会为目标地址空间中的所有共享对象收集数据,而不管这些对象是在初始库列表中,还是使用 dlopen() 显式装入。但是,在某些情况下不会分析某些共享对象:

  • 利用延迟装入调用目标程序时。在这种情况下,库不是在启动时装入的,并且不是通过显式调用 dlopen() 装入的,因此共享对象不包括在实验中,其中的所有 PC 将映射到 <Unknown> 函数。解决方法是设置 LD_BIND_NOW 环境变量,该设置可强制在启动时装入库。

  • 使用 –B direct 选项生成可执行文件时。在这种情况下,通过专门针对 dlopen() 动态链接程序入口点的调用来动态装入对象,并且忽略 libcollector 插入。共享对象名称不包括在实验中,其中的所有 PC 将映射到 <Unknown>() 函数。解决方法是不使用 –B direct 选项。