2015-09-25 19 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