我有一个主机应用程序,并且我编写了一个插件。我将我的插件编译成一个共享对象(比如 foo.so),宿主应用程序将通过 dlopen 加载它。在这种情况下,我的主机应用程序是来自 llvm 的 opt 工具(尽管我认为这对这个问题并不重要)。
我想在启用分析的情况下编译我的插件(即g++ -pg
, gprof
)。但是,当我这样做时,永远不会创建配置文件输出文件 gmon.out。也许 gprof 期望有人调用一个设置例程,或者类似的东西。
由于各种原因,我想避免使用 -pg 重新编译主机应用程序。我很好奇是否可以在不分析主机应用程序 opt 的情况下分析共享对象 foo.so。
我还研究了其他分析工具;HP 的 qprof 应该能够处理这种情况,但它无法解析共享对象中的函数名称(它以非常幼稚的方式回退到 addr2line)。
谢谢,尼克