2017-10-25 16 views
0

私はいくつかのスクリプトによって起動されるcallgrindを使用してプログラムをプロファイルする必要があります。私はスクリプトにvalgrindを開始するように指示することができますが、使用するツールやパラメータをスクリプトに伝えることはできません。valgrindのデフォルトツールとしてcallgrindを設定してください

私はvalgrindマニュアルに変数$VALGRIND_OPTSまたは.valgrindrcを使用することができます。 これはツール固有のオプションで機能します。例えば、私は~/.valgrindrc

--callgrind:callgrind-out-file=<somefile> 

そして、私は.valgrindrcで定義された出力ファイルが書き込まれ

valgrind --tool=callgrind a.out 

a.outをいくつかのテストプログラムを実行して書くことができます。 しかし、使用したいツール(callgrind)を指定することはできません。

は、私が試してみました:

--tool=callgrind 

--valgrind:tool=callgrind 

どちら

は効果がありませんし、memcheckは、デフォルトとして開始されます。 ヒントをいただければ幸いです!

答えて

2

あなたのシェルでエイリアスを作成することができます

$ alias valgrind="valgrind --tool=callgrind" 

をしてスクリプトを呼び出す:

$ ./the_script 

エイリアスはスクリプト内valgrind --tool=callgrindに展開されます。

1

Valgrindはオープンソースなので、コードを取得して修正し、デフォルトでcallgrindにする独自のバージョンをビルドすることができます。変更が必要な行は、coregrind/m_options.cにあります。ここでは、3.13のためです:

const HChar *VG_(clo_toolname) = "memcheck"; // default to Memcheck 

次の引数がearly_process_cmd_line_options(coregrind/m_main.c)で処理されます。これらは、RCファイルまたは環境から読み取ることができないオプションです。

--version" 
"-v"/"--verbose" 
"-q"/"--quiet" 
"-h"/"--help" 
"--help-debug" 
"--tool" 
"--max-stackframe" 
"--main-stacksize" 
"--max-threads" 
"--sim-hints" 
+0

ありがとうございました!これは良い解決策であるようです。私はks1322のソリューションを使用しますが、それはそれほど労力がかからないからです。 – Steffen

関連する問題