- ベストアンサー
linuxでの実行中のプログラムのトレースの仕方
アスタリスクというlinuxで動作するpbxのオープンソースのC言語のソフトがあります。 アスタリスクを立ち上げたとき、関数がどういう順序で呼び出されているかを調べる必要があります。 そこで、http://www.geekpage.jp/blog/?id=2007/1/17を参考にgdbでアタッチしてみましたが、一部 しか表示されないのででうまくいきませんでした。(全関数の呼び出しを表示するにはメモリ・レジスタが不足と出ました) 実行中の複数のモジュールが絡み合うプログラムの関数の呼び出され方を調べるのに、なにか良い方法がありましたら教えて下さい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数呼び出し順序をチェックしたいだけであれば,straceコマンドを使ってみるのはいかが? 下記はご参考までに. http://sourceforge.jp/magazine/03/10/28/1054253
その他の回答 (1)
- virdman
- ベストアンサー率81% (9/11)
アスタリスクというソフトウェアについては知りませんが、プログラムの関数呼び出しをトレースするには ソースコードを見ながら、gdb でトレースする方法が適切かと思います。 tar.gz 等のからインストールされている場合は、アスタリスクをコンパイル時にデバッグシンボルがついていない状態でコンパイルされて可能性があります。 rpm 等からインストールされている場合は、アスタリスクの debuginfo パッケージがインストールされていない可能性があります。(そもそも存在するか知りませんが、なければ tar.gz ファイル内に入っているであろう spec ファイルから rpmbuild -ba コマンドにて生成しても良いと思います。) 質問される際は、ディストリビューション名、バージョン名(CentOS5.6等)は最低でも記載したほうが回答者も回答しやすいと思いますので参考にしてください。 あと、"全関数の呼び出しを表示するにはメモリ・レジスタが不足と出ました"とありますが、実際に出力されたコマンド実行結果やログを記入したほうが適切な回答ができると思います。