跳过Qt Valgrind Function Profiler

时间:2015-09-25 11:13:15

标签: c++ qt valgrind callgrind

在Qt中,您可以集成 valgrind 来分析您的代码。我在 Analyze 模式下使用 Valgrind Function Profiler 并点击 Start 按钮。问题是,我有一个我不感兴趣的巨大启动序列。

我在 valgrind / callgrind.h 中找到了应该帮助我的定义:

  • CALLGRIND_START_INSTRUMENTATION
  • CALLGRIND_STOP_INSTRUMENTATION
  • CALLGRIND_DUMP_STATS

根据this article,我必须使用以下选项执行 valgrind

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

但是我如何在Qt内做到这一点?我仍然想使用漂亮的GUI和导航。 谢谢!

2 个答案:

答案 0 :(得分:1)

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

#!/bin/bash
valgrind --instr-atstart=no $@ ./build/[...]

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

在Qtcreator中,您转到Tools-> Options-> Analyzer并将valgrind可执行文件替换为my_valgrind.sh文件的完整路径

然后它应该工作。

重要的:

  • 如果更改生成的可执行文件的名称,则必须更改 .sh文件。
  • 当valgrind使用此方法运行程序时,它不是从构建文件夹启动,而是从.sh文件所在的文件夹(一级)启动。因此,您必须将“../data/”之类的相对路径重命名为“data /”

答案 1 :(得分:0)

您可以尝试我曾经使用过的这种方法。创建一个bash脚本。

#!/bin/bash
valgrind --tool=callgrind --instr-atstart=no $@

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

值得一试。