0

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

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

  • CALLGRIND_START_INSTRUMENTATION
  • CALLGRIND_STOP_INSTRUMENTATION
  • CALLGRIND_DUMP_STATS

根据这篇文章,我必须使用以下选项执行valgrind :

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

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

4

2 回答 2

1

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

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

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

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

然后它应该工作。

重要的:

  • 如果更改生成的可执行文件的名称,则必须更改 .sh 文件。
  • 当 valgrind 使用此方法运行您的程序时,它不是从构建文件夹启动,而是从 .sh 文件所在的文件夹启动(上一级)。因此,您必须将“../data/”等相对路径重命名为“data/”
于 2016-02-29T11:18:59.733 回答
0

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

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

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

只是值得一试。

于 2015-09-25T14:50:59.800 回答