お世話になります。
UNIX上でC++でコンパイルした実行ファイルで、
その実行ファイルがCALLしている関数の一覧を表示することはできるでしょうか?
コマンドレベルであったらベストですが。
ちなみにUNIXはSolarisでです。
よろしくお願いします。
通常プログラム開発段階でパフォーマンスを上げるため、
何回も呼び出されて速度のボトルネックとなっている関数を
チェックするということを行います。
これはプロファイリングと呼ばれています。
コンパイル時に特殊なオプションをつけて関数呼び出し毎にトレース情報
を出力するようにプログラムに細工をします。
そして実行してみると関数呼び出し履歴などが出力されます。
・・・というようなことでよいのでしょうか?
12月26日にどなたかが同じような質問・回答をされていましたが。
コンパイラのそういうオプションがあると思うので探してみてください。
ちなみにコンパイル済みのものからそういう一覧を出すのはハッカー並の実力が必要と思われます。私には無理です。
自作のプログラムであればデバッグオプションをつけた上で nm すればいい。
gcc -g hoge.c
nm a.out
他人のプログラムを解析したいのなら手伝いません、あしからず。
自作のプログラムですので、
nmで解決できそうです。
tetrapod、がるさん
ありがとうございました。
ツイート | ![]() |