実行ファイルがCALLする関数一覧の表示法

解決


momoでん  2005-02-03 22:56:51  No: 56268

お世話になります。
UNIX上でC++でコンパイルした実行ファイルで、
その実行ファイルがCALLしている関数の一覧を表示することはできるでしょうか?
コマンドレベルであったらベストですが。

ちなみにUNIXはSolarisでです。

よろしくお願いします。


がる  2005-02-03 23:54:44  No: 56269

通常プログラム開発段階でパフォーマンスを上げるため、
何回も呼び出されて速度のボトルネックとなっている関数を
チェックするということを行います。
これはプロファイリングと呼ばれています。
コンパイル時に特殊なオプションをつけて関数呼び出し毎にトレース情報
を出力するようにプログラムに細工をします。
そして実行してみると関数呼び出し履歴などが出力されます。
・・・というようなことでよいのでしょうか?
12月26日にどなたかが同じような質問・回答をされていましたが。
コンパイラのそういうオプションがあると思うので探してみてください。


がる  2005-02-03 23:56:48  No: 56270

ちなみにコンパイル済みのものからそういう一覧を出すのはハッカー並の実力が必要と思われます。私には無理です。


tetrapod  2005-02-04 00:06:50  No: 56271

自作のプログラムであればデバッグオプションをつけた上で nm すればいい。
gcc -g hoge.c
nm a.out
他人のプログラムを解析したいのなら手伝いません、あしからず。


momoでん  2005-02-07 23:25:09  No: 56272

自作のプログラムですので、
nmで解決できそうです。

tetrapod、がるさん
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加