2017-01-11 46 views
5

私はcallgrindを使用して小さなコードをプロファイルしています。 Callgrind出力ファイルがうまく生成され、その内容は大丈夫に見えますが、私はkcachegrindでそれらを開くことができないよ:私は、次のエラーメッセージが表示されます。kcachegrindがcallgrindファイルを開くことができません

がオープンされたファイル「callgrind.out.4953」ことができませんでした。存在することを確認し、それを読むための十分な権限を持っていることを確認してください。

私はファイルとディレクトリにすべてのアクセス許可を持っていますが、同じ問題があります。また、同じワークスペース内の他のフォルダ内の他のプロジェクトでもうまく機能します。私は、両方のケースでプロセスが正しく終了することも正確です。

答えて

5

最近、kcachegrind開発者にまったく同じ症状の問題が報告されました。 callgrindを非常に長いコマンドラインで使用すると、この問題が引き起こされます。これは、valgrind/callgrindとkcachegrindの次のバージョンで修正されました。 以下はvalgrind側のコミットログです。 valgrindとkcachegrindの新しいリリースを待っているうちに、 の問題もコマンドラインが長すぎる場合は、ファイルを編集してcmd:行を切り捨てることができます。 問題がcmd行の長さでない場合は、callgrind_annotate(この場合)を使用するか、kcachegrindがファイルに問題があると判断した理由をさらに調べる必要があります。

著者:weidendo日:火1月10日午後08時21分21秒2017の新リビジョン:16196

ログ:ファイルに

KCachegrindは現在、実際にする前にクイックフォーマット検出を使用しcallgrindする形式のマーカーを追加します。 ファイルをロードし、その最初の2kBの の「events:」で始まる行を確認します。これは明らかに脆弱です。フィリップ氏のバグ報告では、 というバグ報告があります。「イベント」行の前に、Callgrindはコマンドラインに 「cmd:」行を置きます。これが非常に長い場合、検出 は失敗し、ファイルはまったく読み込まれません。

KCachegrindは allでこのクイックフォーマットチェックを行う必要はありませんが、複数の入力フォーマットフィルタがあるポイントで でサポートされていれば、自動的に正しいフィルタを選択すると便利です。

さらに、 "ファイル"コマンドの場合、ファイルマネージャーとデスクトップの 環境では、ファイル形式を検出するユニークな方法は、 が重要です。

callgrind形式でこの問題を修正するのは遅すぎることはありません。

+1

これは事実です:私は自分のプログラムの議論でたくさんのファイルを持っていました。ありがとう。 – Greg82

+0

phd、修正されたkcachegrind/valgrindのバージョンは何ですか? – osgx

+1

osgx:現在、これらのバージョンはまだリリースされていません。 svnとgitリポジトリからvalgrindとkcachegrindをビルドする必要があります。 – phd