問題タブ [sprof]
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.
linux - sprof の使い方
例で説明してください?
linux - sprof「PLTRELが見つからないエラー」
共有ライブラリのプロファイルを作成しようとしていますが、環境変数LD_PROFILEを設定すると、「PLTRELがオブジェクトに見つかりません」というメッセージが表示されます。何が得られますか?欠落しているリンカーフラグのようなものはありますか?インターネット上にはこれに関する情報がないようです。sprofのマニュアルページの長さは約10語です。
c - gprof:メインプログラムにリンクされている共有ライブラリ内の関数のコールグラフを生成する方法
私はLinux環境に取り組んでいます。2つの「C」ソースパッケージtrainとtest_trainがあります。
- コンパイル時にtrainパッケージはlibtrain.soを生成します
- test_trainはlibtrain.soにリンクし、実行可能なtrain-testを生成します
ここで、gprofを使用してコールグラフを生成します。これは、メインプログラムとlibtrain.so内の関数の呼び出しシーケンスを示しています。
両方のパッケージを-pgオプションでコンパイルおよびリンクしており、デバッグレベルはo0です。./train-testを実行すると、gmon.outが生成されます。それから私はします:
ここで、出力は、train-testの関数のコールグラフを示していますが、libtrain.soにはありません。
何が問題なのか?
shared-libraries - sprof が「ld.so によって検出された矛盾」について不平を言う原因は何ですか?
sprof を使用して、ほとんどすべてのコードが共有ライブラリにあるソフトウェア (ossim) のプロファイルを作成しようとしています。プロファイリング ファイルを生成しましたが、sprof を実行すると、次のエラーが発生します。
私が従った指示によると、少なくとも 2.5-34 の libc バージョンが必要で、私は libc バージョン 2.12.2 (Gentoo、カーネル 2.6.36-r5) を持っています。
エラーの意味や (さらに興味深いことに) 修正方法についての説明が見つかりません。半分関連性のある Google の結果は、古いバージョンの Skype のバグに関するものだけです。
c++ - sprofはどのようにして私の共有ライブラリを見つけることができますか
/tmpフォルダーに共有ライブラリ「mylib.so」を作成しました。mylib.soのプロファイルを作成したいと思います。これを行うために、私は次の手順を実行しました
- LD_PROFILE_OUTPUT =${PWD}をエクスポートします
- LD_PROFILE=mylib.soをエクスポートします
- LD_LIBRARY_PATH =/tmpをエクスポートします
- mylib.soに対してリンクされているmy_appを実行します
これらの4つの手順の後、/tmpフォルダーにmylib.so.profileがあると「想定」されます。しかし、そのようなファイルはありません。私の疑いは、sprofがmylib.soを見つけることができないということです。/ tmpフォルダーでmylib.soを探すようにsprofに指示するにはどうすればよいですか?私はredhatEnterpriselinux5.0を使用しています。
c++ - sprofなしでダイナミックリンクライブラリをプロファイリングする方法は?
ダイナミックライブラリのプロファイリングに問題があり、sprofを使用したことがある人を見つけることができないようです。
動的にリンクされたライブラリのコールグラフを提供できる代替ツールを知っている人はいますか?
linux - これらのエクスポート変数のデフォルト値は?
以下の手順を使用して、sprof をセットアップしようとしました (このhttp://greg-n-blog.blogspot.com/2010/01/profiling-shared-library-on-linux-using.htmlに従って)。今、私のプログラムは実行されません。以下を元に戻すために必要な手順は何ですか?
2) export LD_PROFILE_OUTPUT= pwd
3) export LD_PROFILE=libmylib.so
4) rm -f $LD_PROFILE.profile
linux - LD_PROFILE を使用したプリロードされた共有ライブラリのプロファイリング
現在、LD_PROFILE 環境変数を使用して、プリロードされた共有ライブラリのプロファイルを作成しようとしています。
「-g」フラグを指定してライブラリをコンパイルし、プリロードされたライブラリでアプリケーション (私の場合は ncat) を実行する前に、LD_PROFILE_OUTPUT と LD_PROFILE をエクスポートします。したがって、より正確には、私が行うことは次のとおりです。
- 「-g」フラグを指定して共有ライブラリ libexample.so をコンパイルします。
export LD_PROFILE_OUTPUT=`pwd`
export LD_PROFILE=libexample.so
- 走る
LD_PRELOAD=`pwd`/libexample.so ncat ...
プリロード自体は機能し、私のライブラリが使用されますが、ファイル libexample.so.profile は作成されません。代わりに使用export LD_PROFILE=libc.so.6
すると、期待どおり libc.so.6.profile ファイルがあります。
これは LD_PRELOAD と LD_PROFILE の組み合わせの問題ですか、それとも何か間違っている可能性がありますか?
関連性がある場合は、CentOS 6.4でglibc v2.12を使用しています。
どうもありがとう!