• ベストアンサー

Linux環境でC++のGDBを途中から実行したい

初歩的な質問で申し訳ないのですが、 現在LinuxでGDBの勉強をしています。 LinuxでC++で組んだプログラムを実行する際に 1.gdb a.out 2. run でmainから起動し、<調べたいクラス>::<関数>にbreakpoint設定を行ってから cで飛ばしていたのですが、 起動時、またはrun時に調べたいクラスの関数からはじめるということは可能なのでしょうか? 拙い文章で申し訳ありませんがご存知の方ご教授お願いいたします。

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

えー、「前もって用意されたコマンド手順」を参照って書いてるんですが…… もうちょっと突っ込んで書くと「クラスメンバ関数の頭にbreakpoint設定、その後run」というユーザ定義コマンドを設定してはどうか、ということです。 コマンド定義について詳しく書いてあるところを見つけたので参考にしてください。 http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-5.0/gdb-ja_17.html クラスメンバ関数がC関数のようにコマンド一発で呼べないのは、インスタンスがないとアドレスが確定しないからでしょう。

nuno0920
質問者

お礼

お礼遅くなり申し訳ありません。 いろいろと素人な質問に相手していただきありがとうございました。

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

> 今までそれでやっていたのですが、直接呼べる方法は無いのかという質問です。 質問文からはとてもそうは読み取れませんでした。 それはさておき、以下の「前もって用意されたコマンド手順」辺りが参考になるのではないかと。 http://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_toc.html

nuno0920
質問者

補足

申し訳ありません。 最初の質問文のrunとbreakpoint設定の順序が逆になっていました。 http://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_toc.html は質問の前に一応目を通したのですが gdbコマンド自体のオプション、runの時のオプションからは 途中からの実行ができる方法は読み取れませんでした。 C言語の場合はgdb起動後にmainにb設定をしておいて、 run実行後に「call 関数名」でいけるのですが これをC++で特定のクラスから行えればいろいろ便利かなと思い質問した次第です。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

breakpointを設定してからrunすればいいのでは?

nuno0920
質問者

補足

今までそれでやっていたのですが、直接呼べる方法は無いのかという質問です。

関連するQ&A