2013-03-04 16 views
8

私はこの質問をオンラインで検索しようとしましたが、私の問題の良い解決策を見つけることができないようです。さて、私はgdbを使って私のC++プログラムをデバッグしようとしています。プログラムは単純なmain.cppとmodel.hで構成されています。コンパイルコマンドはgdbをC++ヘッダーファイルに使用するには?

g++ -Wall -g -c main.cpp 
g++ -Wall -g main.o -o OUTPUT 

です。ほぼすべてのアルゴリズムがmodel.hに格納されているので、私はcppファイルではなくそのヘッダファイルをデバッグする必要があります。私は

tbreak model.h:163 

gdbのように、ヘッダにブレークポイントを配置しようとした時はいつでもしかし、常に「TNFmodel.hという名前のソースファイル」という私にメッセージを与えます。

別の質問breakpoints in GDBでは、ヘッダを含むフォルダを "dir"でライブラリに追加して解決策を見ました。しかし、私のヘッダファイルは既にソースフォルダにあり、試した後に

dir ./ 

問題は維持されます。

誰も何が間違っているのか分かりますか? gdbを使ってヘッダファイルをデバッグするには?

+2

コンパイル時にその場所からヘッダーも含まれていましたか?おそらく、 'info sources'を入力するときにgdbが出す出力を投稿することができます。 – Nobody

+0

ああ...私は情報源をチェックし、今問題を見た...手紙の場合は一致しませんでした。まあ、私はどのようにコンパイルを通過したのかわかりません...しかし、おそらく私はMacを使用しているため、コンパイル時にケースが敏感でないことがあります。大文字と小文字を修正した後、gdbはヘッダに対して正常に動作します。ありがとう。 – Chong

答えて

3

https://stackoverflow.com/users/760746/nobodyによって示唆されるように、必ずヘッダがソースにするようにする一つの方法は、

をチェックして、それをveryfyすることです
info sources 

ヘッダ自体がソースにあることを確認した後(私の場合は、ヘッダ名の文字の大文字小文字が混ざり、何とか私のmac bookのコンパイルを行った)、ブレークポイントを挿入するヘッダーファイルの行でうまく動作します。

+0

理由はMacBookの作品は、ディスクが大文字と小文字を区別しないようにフォーマットされているため、ファイル名の大文字と小文字は区別されませんでした。 – Chong

1

このようなあなたのクラス/メソッド名でブレークを使用してみてください:

break class::method 
+0

私はそのメソッドの行の中に直接行くことはできませんが、最初にメソッドに移動してから、行を追跡して壊したいのですか?それほど便利ではありません... – Chong

+0

私は他の可能性は分かりませんよ、 – duDE

+1

私は尋ねているのですが...時々この機能が欠けているのは本当に不便です... – Chong

関連する問題