- ベストアンサー
Linux環境でC++のGDBを途中から実行したい
初歩的な質問で申し訳ないのですが、 現在LinuxでGDBの勉強をしています。 LinuxでC++で組んだプログラムを実行する際に 1.gdb a.out 2. run でmainから起動し、<調べたいクラス>::<関数>にbreakpoint設定を行ってから cで飛ばしていたのですが、 起動時、またはrun時に調べたいクラスの関数からはじめるということは可能なのでしょうか? 拙い文章で申し訳ありませんがご存知の方ご教授お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
えー、「前もって用意されたコマンド手順」を参照って書いてるんですが…… もうちょっと突っ込んで書くと「クラスメンバ関数の頭にbreakpoint設定、その後run」というユーザ定義コマンドを設定してはどうか、ということです。 コマンド定義について詳しく書いてあるところを見つけたので参考にしてください。 http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gdb-5.0/gdb-ja_17.html クラスメンバ関数がC関数のようにコマンド一発で呼べないのは、インスタンスがないとアドレスが確定しないからでしょう。
その他の回答 (2)
- D-Matsu
- ベストアンサー率45% (1080/2394)
> 今までそれでやっていたのですが、直接呼べる方法は無いのかという質問です。 質問文からはとてもそうは読み取れませんでした。 それはさておき、以下の「前もって用意されたコマンド手順」辺りが参考になるのではないかと。 http://flex.ee.uec.ac.jp/texi/gdb-j/gdb-j_toc.html
補足
申し訳ありません。 最初の質問文の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)
breakpointを設定してからrunすればいいのでは?
補足
今までそれでやっていたのですが、直接呼べる方法は無いのかという質問です。
お礼
お礼遅くなり申し訳ありません。 いろいろと素人な質問に相手していただきありがとうございました。