質問
これは以前に尋ねられた可能性があると思いますが、要件を満たすものが見つかりません。
私は、さまざまなテストスイートでコードフローを分析しようとすることで、大きなプロジェクトをデバッグしています(実際に理解しようとしています)。しかし、いくつかのファイルにブレークポイントを設定しようとすると、「ファイル名が見つかりませんソースファイルが見つかりません」というエラーが表示されます。
だから私の質問は:
- gdbは、コードフローが入力されるソースファイルのブレークポイントのみを受け入れることができますか?
-
b filename:*
のようなファイルの行全体にブレークポイントを設定できますか
- ヘッダーファイルがコンパイル時に追加されるだけなので、ヘッダーファイルのブレークポイントは受け入れられますか?
どんな洞察も歓迎です。
編集
これらの問題をいくつかのHello Worldコードで確認し、回答の1つで指摘されたのと同じ結果が見つかりましたが、実際のプロジェクトの問題はまだ残っています。ブレークポイントとして受け入れられない同じ行の編集された出力を表示できる場合でも、同じエラーが表示されます。
編集2
私はそれを動作させましたが、それがどのようにそしてなぜ動作するか理解していません。
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)
より深い洞察..?
解決
共有ライブラリ以外に注意すべきもう1つの点は、 gdb
のソースファイル名は、コードがコンパイルされたディレクトリに関連しているということです。絶対パス名でコンパイルしていない場合は、 dir
コマンドを使用して、コンパイルディレクトリを gdb
がソースコードを検索する場所のリストに追加します。
ヒント:データ表示デバッガー(DDD)を使用すると、生産性が大幅に向上します。 gdb
のグラフィカルフロントエンド。
他のヒント
- いいえ。
- いいえ。
- はい。
-g(デバッグ)オプションでコンパイルしてください。ソースパスが正しく設定されていることを確認してください。ディレクトリを使用して、ディレクトリを表示し、dirコマンドを表示/設定します。
所属していません StackOverflow