Callgrind在动态加载的SO中看不到源

时间:2013-05-23 16:38:43

标签: c++ shared-libraries valgrind callgrind

我正在尝试在callgrind的某些结果上运行KCacheGrind。基本上,代码库是一个插件容器,用于启动共享对象以运行特定功能。使用Callgrind配置此应用程序后,我可以在功能级别查看成本,但不能在源级别查看。

在启动SO之前,我可以在源代码级别使用插件容器代码查看,但是我看不到启动的SO中包含的任何代码。

我知道我正在编译调试符号,但由于某种原因我无法看到动态加载的SO源代码。

谢谢,

1 个答案:

答案 0 :(得分:2)

我也遇到了这个问题。修复它的方法是在退出之前停止主机应用程序卸载插件。在我的情况下,我试图为Lua配置C模块,当VM正常退出时,Lua正在卸载模块。为了解决这个问题,我让脚本调用os.exit()来强制关闭。

要么在插件容器中禁用插件卸载,要么创建一个插件,允许你强制应用程序退出(调用_exit(0))。