問題タブ [gperftools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - aarch64 用の Google perf ツールのリンク
PCでGoogleパフォーマンスツールを正常に使用しています。ただし、aarch64 アーキテクチャ用にコンパイルおよびデプロイしているため、x86 で取得したプロファイリング結果が aarch64 と一致しない場合があります。
aarch64 デバイスで直接測定したかったのです。フラグを付けてコンパイルしRelWithDebInfo
、プロファイラーの実行時リンクを使用してコードを実行しましたLD_PRELOAD
。
私の最初の試みでは、ほとんどの場合、関数名の代わりにアドレスを取得しました:
ただし、一部の関数の実際の関数名を取得しました。
LD_PRELOAD
オプションはお勧めしません。-lprofiler
x86 PC で、次のようにしてGoogle パフォーマンス ツールをコンパイルした後、オプションでリンクしようとしました。
コードを実行しようとするとmake
、次のエラーが発生しました。
Google perf ツールを使用して aarch64 デバイスの CPU をプロファイリングするにはどうすればよいですか?
profiling - gperftools - プロファイル ファイルがダンプされない
gpreftoolsを構成してビルドしました。ただし、プログラムを表示するために生成されたプロファイル ファイルが見つからないようです。
私は次の行動をとった:
-lprofiler
my にリンカー フラグを追加し.pro
、プログラムをビルドすると、リンク段階でフラグが正しく追加されます。QMAKE_LFLAGS += -lprofiler
実行中:
$ CPUPROFILE=/tmp/prof.out /path/to/executable
実行中:
$ pprof --gv /path/to/MyExe /tmp/prof.out
次に、次のようになります。
Failed to get profile: curl -s --max-time 90 'http:///pprof/profile?seconds=30' > /home/eslam/pprof/.tmp.MyExe.1509005857.: No such file or directory.
誰でもこれについて解決策を持っていますか?
c++ - gperftools での明らかなメモリ リーク
これは、アドレスサニタイザーで構築されたプログラムを実行しているときに表示され、興味をそそられました。
gperftools ソース コードには、次の関数が含まれています。
以下のようにInitModule
定義して
私たちのアドレス サニタイザー (もちろん valgrind ではありません) は、MallocExtension
オブジェクトのメモリ リークについて文句を言います。どうやら、それは正しいです。しかし、そもそもなぜこの割り当てがあるのでしょうか?
独自のメモリ アロケータを開発している人々が、このような些細な間違いを犯すとは思いません。valgrind に対する明示的なチェックもあります。では、割り当ての目的は何ですか?
c++ - cmake : Google プロファイラー (gperftools) とのリンクに失敗しました
私はubuntu 16.04を使用しています。
ここで私がしたこと:
インストールされた gperftools :
/li>FindGperftools.cmake をダウンロード: https://github.com/vast-io/vast/blob/master/cmake/FindGperftools.cmake
名前を変更
FindGperftools.cmake
して、パッケージ内GperftoolsConfig.cmake
のフォルダーに配置しましたcmake
に追加
/li>CMakelists.txt
:同じ CMakelists.txt で、実行可能ファイルをリンクします。
/li>端末で、CPUPROFILE 環境変数をエクスポートします。
/li>同じターミナルで、実行可能ファイルを実行します。
/li>
エラー メッセージはありませんが、ログ ファイル/my_path/prof.out
は作成されません。
「my_executable」で「ldd」を実行すると、プロファイラーに対するリンクは表示さldd ./my_executable | grep profil
れません (結果は何もありません)。それでも、ビルドフォルダー内のファイルを見ると、コンパイラーはリンケージを行っているようです ( -lprofile
is there )。
私が忘れているかもしれないものはありますか?
注: 関連性があるかどうかはわかりませんが、私は catkin を使用しています。