将 gprof 与 makefile 一起使用
Posted
技术标签:
【中文标题】将 gprof 与 makefile 一起使用【英文标题】:Using gprof with a makefile 【发布时间】:2012-03-01 17:44:28 【问题描述】:我在尝试分析我的程序时遇到问题。
我像这样单独编译每个函数:
function1.o: function1.cpp
g++ -g -pg -z -c function1.cpp
然后我像这样将所有内容链接在一起:
exec: function1.o function2.o function3.o main.o
g++ -g -pg -z -c -o exec function1.o function2.o function3.o main.o
但是当我用./exec
运行程序然后用gprof exec
分析数据时,我没有得到分析数据,它说:
granularity: each sample hit covers 4 byte(s) no time accumulated
我做错了吗?
【问题讨论】:
您是否考虑过使用 valgrind-callgrind 和 kcachegrind 代替?我有一个类似的问题,无法让 CMAKE 与 gprof 一起工作,最终使用了 callgrind。 kcachegrind 可视化很有帮助。 为什么你认为问题与make
的使用有关?手动编译,不使用make
,难道看不到问题吗?
【参考方案1】:
很可能您的程序运行时间不够长,gprof 无法收集任何样本。
你可以通过多次执行主循环来任意增加运行时间。
如果您在 Linux 上运行,请允许我也推荐 perf
,这是一个非常好的分析工具。
【讨论】:
以上是关于将 gprof 与 makefile 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
使用cmake与makefile调试需要指定的参数[GDB与Gprof参数]
使用cmake与makefile调试需要指定的参数[GDB与Gprof参数]