2015-09-25 73 views
0

在Qt中,您可以集成valgrind来分析您的代码。我正在使用Valgrind函数分析器中的分析模式并点击开始按钮。问题是,我有我不感兴趣,在一个巨大的启动顺序跳过代码在Qt Valgrind函数分析器

我发现定义了的valgrind/callgrind.h应该来帮助我。

  • CALLGRIND_START_INSTRUMENTATION
  • CALLGRIND_STOP_INSTRUMENTATION
  • CALLGRIND_DUMP_STATS

根据this article我必须执行的valgrind有以下选项:

valgrind --tool=callgrind --instr-atstart=no ./application

但我怎么做,Qt的范围内?我仍然想使用漂亮的GUI和导航。 谢谢!

回答

0

你可以尝试一下我用过的这种方法。创建一个bash脚本。

#!/bin/bash 
valgrind --tool=callgrind --instr-atstart=no [email protected] 

使其成为可执行文件(chmod + x)并将其用作可执行文件Qt Creator -> Tools -> Options -> Analyzer

只是值得一试。

+0

我尝试过,但我得到一些奇怪的错误:? 剖析/家庭/泰山/富/建设/应用 无法启动程序路径或权限错误 分析 错误:“/home/tarzan/valgrind_custom_settings.sh”无法启动:执行格式错误 – FrozenTarzan

+0

我的新方法是使用kcachegrind来显示callgrind的结果,但是我再次遇到问题,请参阅我的新问题](http://stackoverflow.com/questions/32905212/how-to-use-kcachegrind-and-callgrind-to-measure-only-parts-of-my-code) – FrozenTarzan

+0

你可以显示'valgrind_custom_settings.sh'内容? – ramtheconqueror

1

假设您有一个带有“main.cpp”和子文件夹“build”的项目。创建一个名为“my_valgrind.sh”旁边“的main.cpp”的文本文件,并把下面的行它:

#!/bin/bash 
valgrind --instr-atstart=no [email protected] ./build/[...] 

与您的可执行文件的名称替换[...]。 Qt通过$ @ 提供剩余的参数然后使sh文件可运行:右键单击.sh文件 - >属性 - >权限 - >允许执行作为程序(或使用命令行解决方案) 也许您需要更改权限(CHOWN [用户名] my_valgrind.sh)

在Qtcreator你去工具 - >选项 - >分析仪和替换的完整路径Valgrind的可执行文件的文件my_valgrind.sh

那么就应该工作。

重要:

  • 如果更改名称的产生executeable你必须改变 sh文件。
  • 当valgrind使用此方法运行程序时,它不是从build文件夹启动,而是从.sh文件所在的文件夹(上一级)启动。因此,你必须重命名相对路径,如“../数据/”到‘数据/’
+0

嘿abc,谢谢你的回答!我创建了脚本,并选择将路径设置为可执行的绝对路径(应该没问题!?)。我的文件夹结构有点不同:我有一个* .pro和我的main.cpp文件夹,但我的生成文件夹在此文件夹之外。这就是我使用绝对路径的原因。当使用Valgrind Function Profiler时,我得到两个callgrind.out文件(一个在开始,一个在结尾)。但QtCreator似乎没有形象化任何结果。日志说“分析完成”但所有的对话框都是空的:-( – FrozenTarzan