【发布时间】:2012-02-08 03:14:03
【问题描述】:
我正在尝试分析我正在开发的 Qt 窗口应用程序,并且已经阅读了使用 gprof 进行分析的方法。我已成功将项目配置为编译并与 -pg 标志链接以启用分析,并且每次执行应用程序时都会输出 gmon.out。但是,当我尝试运行 gprof 将 gmon.out 文件转换为可读的 txt 文件时,我遇到了“gmon.out too short to be a gmon file”错误消息。我尝试用谷歌搜索这个问题的答案,但无济于事。也有人在这里问过同样的问题,但没有给出答案。
我在此项目中使用 Qt 4.7.4 和 Qt Creator 2.3.0 以及 Windows 7 上的 mingw 编译器。
我在 .pro 文件中设置的标志是:
# Profiler flags
CONFIG += DEBUG
QMAKE_CXXFLAGS_DEBUG += -pg
QMAKE_CXXFLAGS_MT_DBG += -pg
QMAKE_LFLAGS_DEBUG += -pg
这就是我从命令提示符调用 gprof 的方式:
C:\QtSDK\mingw\bin>gprof "C:\Qt exe\debug\QtGUI.exe" > profile.txt
还有错误信息: gmon.out:文件太短,不能成为 gmon 文件
我还检查了 gmon.out 的文件大小;每次我运行调试应用程序时,它大约是 520 kb。这真的太短而不能成为 gmon 文件吗?
【问题讨论】:
-
我可能错了,但要运行
gprof,你不只是运行gprof而不带参数吗?我认为您可能试图让gprof在您的可执行文件上运行,而不是在gmon.out上运行。 -
“让 gprof 在您的可执行文件而不是 gmon.out 上运行”是什么意思?从我在cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC4 中读到的内容来看,这就是我们应该如何运行它,除非我在那里误读了一些东西。
-
@ksming- 通常当我运行
gprof时,我会运行程序进行分析,然后只运行gprof而不使用其他命令行参数。它默认处理gmon.out。你试过了吗? -
我已经尝试过了,但它默认寻找 a.out 。我必须将 gmon.out 作为 gprof 放在目录中吗?
-
嗯...没关系!我想我错了。
标签: c++ windows performance qt profiler