0

Qt では、 valgrindを統合してコードを分析できます。分析モードで Valgrind Function Profiler を使用し、[開始]ボタンをクリックします。問題は、興味のない巨大な起動シーケンスがあることです。

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 ファイルを右クリック -> プロパティ -> パーミッション -> プログラムとして実行を許可 (またはコマンド ライン ソリューションを使用) ( chown [ユーザー名] my_valgrind.sh )

Qtcreator で Tools->Options->Analyzer に移動し、valgrind 実行可能ファイルを my_valgrind.sh ファイルへのフル パスに置き換えます。

その後、動作するはずです。

重要:

  • 生成された実行可能ファイルの名前を変更する場合は、.sh ファイルを変更する必要があります。
  • valgrind がこの方法でプログラムを実行している場合、プログラムはビルド フォルダーからではなく、.sh ファイルがあるフォルダー (1 レベル上) から開始されます。したがって、「../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 に答える