OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

gdbデバッガって?

  • 困ってます
  • 質問No.103304
  • 閲覧数558
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 18% (2/11)

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

誰かそのやり方とか、言葉説明をしてもらえませんか?
御願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 55% (155/280)

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

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

デバッグすることを求められているのではなく、
落ちたときの情報の提供を求められているのですよね?
お礼コメント
yukkinn

お礼率 18% (2/11)

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

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

もうちょっと背景説明が欲しいところですが、 gdbということは、UNIX系のアプリケーションでしょうか? コアファイルは残っているでしょうか? あるいは、そのアプリケーションをほぼ確実に落とす手順はあるでしょうか? 前者なら、  gdb アプリケーションプログラムファイル コアファイル として起動してください。後者なら、  gdb アプリケーションプログラムファイル として起動し、アプ ...続きを読む
もうちょっと背景説明が欲しいところですが、
gdbということは、UNIX系のアプリケーションでしょうか?
コアファイルは残っているでしょうか?
あるいは、そのアプリケーションをほぼ確実に落とす手順はあるでしょうか?

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

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

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

これらの情報を渡せばいいんではないでしょうか?
補足コメント
yukkinn

お礼率 18% (2/11)

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

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

いろいろ書いてしまいましたが、宜しく御願い致します。
投稿日時 - 2001-07-12 17:54:30
  • 回答No.2
レベル12

ベストアンサー率 33% (196/589)

gdbのオンラインヘルプを載せておきます。 >プログラム開発はしたことが無いので、デバッグとかも全然わかりません。 プログラムの経験の無い人がこのような事を頼まれる事が理解出来ません。 gdbを使ってデバッグを行うと言う事は、自分でプログラムを作っていなくても デバッグするプログラムは理解している必要が有ります。 また、デバッグがを使うと言う事は、通常のプログラムの理解よりも、もっとハ ...続きを読む
gdbのオンラインヘルプを載せておきます。

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

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

また、デバッガを動かすためには、コンパイルオプションにデバッグ情報を作成するように指定して置く必要が有ります。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ