我需要在我们的系统中gprof一个库来检查函数调用,看看我们是否可以再优化它。基本上,我所拥有的是
可执行文件A使用共享库myLib.so
我想gprof myLib.so。当我使用-pg选项编译myLib.so源时,它会生成一个.so文件。
但是,针对该库重新编译可执行文件A不会因某种原因生成* .gmon文件。需要做什么?我应该静态链接myLib吗?如果是这样,请告诉我如何。我是新手,所以请原谅我的无知。我每天都在学习
提前感谢。
答案 0 :(得分:1)
你可以使用像RotateRight/Zoom这样的优秀抽样分析器,或者你可以试试this technique。 lsstack 也很好用。 pstack 也有,但更适合你。
答案 1 :(得分:0)
我有同样的问题,但我认为最好的办法是创建一个小的C / C ++程序,该程序使用带有一些测试调用的库,使用-pg使用库编译它,以及配置文件。 这样你就可以很好地将库的分析问题与其他东西隔离开来。
正如http://sourceware.org/binutils/docs/gprof/Implementation.html和https://stackoverflow.com/a/7290284/885650指出的那样,链接时需要-pg,因为它会在任何地方添加额外的代码。