5

我需要在我们的系统中 gprof 一个库来检查函数调用,看看我们是否可以进一步优化它。基本上,我所拥有的是

使用共享库 myLib.so 的可执行文件 A

我想 gprof myLib.so。当我使用 -pg 选项编译 myLib.so 源时,它会生成一个 .so 文件就好了。

但是,由于某种原因,针对该库重新编译可执行文件 A 不会生成 *.gmon 文件。需要做什么?我应该静态链接 myLib 吗?如果是这样,请告诉我如何。我是新手,请原谅我的无知。我每天都在学习

提前致谢。

4

2 回答 2

1

你可以做得比gprof更好。

您可以使用像RotateRight/Zoom这样好的采样分析器,或者您可以尝试这种技术。lsstack很好用。pstack也可以,但对您来说工作量更大。

于 2010-03-13T14:05:01.397 回答
0

我有同样的问题,但我认为最好的办法是创建一个小型 C/C++ 程序,该程序使用带有一些测试调用的库,使用 -pg 与库一起编译它,然后对其进行分析。这样,您也可以很好地将库的分析问题与其他内容隔离开来。

正如http://sourceware.org/binutils/docs/gprof/Implementation.htmlhttps://stackoverflow.com/a/7290284/885650指出的那样,链接时需要 -pg ,因为它会在任何地方添加额外的代码。

于 2012-03-07T13:41:25.703 回答