让gprof从Qt调试应用程序读取gmon.out输出的问题

时间:2012-02-08 03:14:04

标签: c++ windows performance qt profiler

我正在尝试分析我正在开发的Qt窗口应用程序,并且已经阅读了使用gprof进行分析的方法。我已成功配置项目以编译并链接-pg标志以启用分析,并且每次执行应用程序时都会输出gmon.out。但是,当我尝试运行gprof将gmon.out文件转换为可读的txt文件时,我遇到了“gmon.out太短而不能成为gmon文件”的错误消息。我试着谷歌搜索这个问题的答案但无济于事。有人在这里也提出了同样的问题,但没有给出答案。

我正在使用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文件吗?

1 个答案:

答案 0 :(得分:0)

运行gprof时,如果省略输出文件的名称,gprof将采用默认名称“gmon.out”。此文件应位于运行gprof的同一文件夹中。

因此,在运行程序时,请检查输出文件gmon.out是否在您运行的文件夹中正确生成。另外要注意目录,你可以在这里阅读

  

gmon.out' file is written in the program's current working directory at the time it exits. This means that if your program calls chdir, the gmon.out'文件将保留在程序chdir所在的最后一个目录中。如果您没有权限在此目录中写入,则不会写入该文件。

(来自:http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

在这种情况下,您可以将输出文件路径指定为:

C:\QtSDK\mingw\bin>gprof QtGUI.exe path_to_outfile\gmon.out > profile.txt

希望这有帮助。

侨!