プロが教える店舗&オフィスのセキュリティ対策術

「gdbデバッガでスタックトレースを解析して、どこでアプリケーションが落ちているか解析してください。」
と言われました。
はっきり言って、何を言ってるのか全然分かりません・・・
プログラム開発はしたことが無いので、デバッグとかも全然わかりません。

誰かそのやり方とか、言葉説明をしてもらえませんか?
御願いします。

A 回答 (3件)

補足されているように gdb を起動すれば大丈夫です。


gdb を起動しても、それだけではアプリケーションプログラムは動作しませんので、
既に常駐しているものと衝突する危険はありません。
コアファイルがある場合には、そのファイルによって落ちたときの状況を再現
しますので、プログラムを起動することもありません。

ただし、No.2 の方のいうように、デバッグ用にコンパイルされていないと、
無意味な情報の羅列しか得られない可能性もあります。
とりあえず、where コマンドの出力を提出しておくしかないでしょう。

デバッグすることを求められているのではなく、
落ちたときの情報の提供を求められているのですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます。
ちょっと勉強不足過ぎました・・・反省・・・
言われたとおりにしてみたんですが、どうやら、メモリの破壊によるプログラムの異常終了のようです。
SIGILL:illegal instruction
というメッセージが出ていました。
ありがとうございました。

お礼日時:2001/07/12 19:17

gdbのオンラインヘルプを載せておきます。



>プログラム開発はしたことが無いので、デバッグとかも全然わかりません。

プログラムの経験の無い人がこのような事を頼まれる事が理解出来ません。
gdbを使ってデバッグを行うと言う事は、自分でプログラムを作っていなくても
デバッグするプログラムは理解している必要が有ります。
また、デバッグがを使うと言う事は、通常のプログラムの理解よりも、もっとハードに近い知識が必要とされ、そこが分かっていない人に説明しても何も理解出来ないと思います。(例えば、スタック、レジスタ、論理アドレス、マシン語...)

また、デバッガを動かすためには、コンパイルオプションにデバッグ情報を作成するように指定して置く必要が有ります。

参考URL:http://www.ex.media.osaka-cu.ac.jp/~a97m030/unix …
    • good
    • 0

もうちょっと背景説明が欲しいところですが、


gdbということは、UNIX系のアプリケーションでしょうか?
コアファイルは残っているでしょうか?
あるいは、そのアプリケーションをほぼ確実に落とす手順はあるでしょうか?

前者なら、
 gdb アプリケーションプログラムファイル コアファイル
として起動してください。後者なら、
 gdb アプリケーションプログラムファイル
として起動し、アプリケーションが落ちるまで進めて行ってください。

アプリケーションプログラムがデバッグ用に作成されていれば、
ここで
 where
コマンドを実行することで、落ちた時点の関数がどのような手順で呼び出され
いるかの履歴と、各引数の値が表示されるはずです。これがスタックトレース
です。

どのソースファイルの何行目であるかも表示されているはずです。

これらの情報を渡せばいいんではないでしょうか?

この回答への補足

ご回答ありがとうございます。
アプリケーションはHP-UX11.0上で動いています。
コアファイルは残っています。
プログラムは常駐プログラムなので落とすことはできません。
例えば、
プログラムの実行ファイル?:test
コアファイル:test1
だとすると
gdb /フルパス/test /フルパス/test1
と実行すればいいのでしょうか?

あと、プログラムが落ちていなくても、gdbコマンドを実行しても大丈夫でしょうか?

いろいろ書いてしまいましたが、宜しく御願い致します。

補足日時:2001/07/12 17:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!