25

私の問題は、コードにいくつかのブレークポイントを設定し、それらのいくつかが機能していないことです。いくつかの場所では、「未解決のブレークポイント」について不平を言います。

なぜこれが起こっているのか誰かが何か手がかりを持っていますか?ちなみに、私はgdbを使用しています。

編集:はい、もちろんデバッグ情報でコンパイルされています。これは、コード内の一部のクラスまたはポイントでのみ発生します。そして、ステップで到達できるので、コードのその部分に到達すると確信しています。

編集:リチャードの解決策は機能しません。とにかくありがとう。最適化せずにデバッグでコンパイルしています。

4

12 に答える 12

15

Could it be that you are trying to set breakpoints in a shared library that has not been loaded yet. That won't work until the library has loaded. Newer gdb allow to set deferred breakpoints, but that may not (yet) be supported by CDT. A workaround is to set a breakpoint in a place that is available from the beginning that will be reached when the shared library in question is already loaded. Then set the other breakpoint in the shared library. Now it should work. It's a bit more tedious, but usually works.

From the GDB documentation:

For a pending breakpoint whose address is not yet known, this field will contain 'PENDING'. Such breakpoint won't fire until a shared library that has the symbol or line referred by breakpoint is loaded.

于 2009-05-22T04:04:00.957 に答える
10

参照されている Process Launcher を「GDB (DSF) Create Process Launcher」から「Standard Create Process Launcher」に切り替えると、この問題が解決することがあることがわかりました。また、すべてのブレークポイントを削除して Eclipse を再起動するだけでうまくいく場合もあります。

于 2012-08-15T13:18:13.363 に答える
3

「未解決のブレークポイント」とは、ブレークポイントを設定しようとしたファイルと行に対応するコードの場所がGDBで見つからなかったことを意味します。

コンストラクターで停止しようとしていますか?

もしそうなら、あなたはおそらくこの中心的に修正されたGCCバグを見ているでしょう。

于 2008-12-06T07:30:14.633 に答える
0

F8 (再開) を使用しても、ブレークポイントで停止しないことがわかりました。しかし、Stop On Startup : main を設定してから、コード (F5/F6) をステップ オーバーすると、ブレークポイントにヒットします。-g または -g3 以外の特別なコンパイラ オプションはありません。その助けを願って...

于 2012-05-20T11:24:53.883 に答える
0

GDB をデバッガとして使用している場合は、-g と -ggdb の両方のフラグを使用していることを確認してください。

メイクファイルを直接編集することもできます.FCFLAGS = -g -ggdb (その他のフラグがあるかもしれません)

または、デバッグ構成に移動します (バグ アイコンの横にある小さな矢印をクリックすると、ドロップダウン メニューに表示されます)。デバッグしているプロジェクトを選択し、デバッガー タブをクリックします。gdb を使用していることを確認し、ここにフラグを追加します。

于 2016-05-10T17:57:54.497 に答える
0

GDBでも同様の問題がありました。パスが異なっていても、ソースコードのファイル名が同じであることが原因のようです。複製の名前を変更したところ、その後 GDB は問題なく動作しました。

シルヴィウ

于 2014-05-30T01:45:27.373 に答える
0

ここでの他の回答で問題が解決しない場合は、私が抱えていたのと同じ問題が発生している可能性があります (これは、古いバージョンの GDB を使用した結果です)。これは、Mac で GDB を使用しているすべての人に当てはまる可能性があります。

ここで私の質問と回答を参照してください:

複数のソース ファイルを使用する場合、一部のコード行で GDB が壊れない

于 2013-08-07T22:57:25.510 に答える
0

テンプレート クラス/関数にブレークポイントを配置しますか? 同じ問題に遭遇しました。テンプレートのコードをステップ実行できますが、ブレークポイントが機能しません。Eclipse は、そのクラスのすべてのインスタンス化にブレークポイントを配置する必要があることを理解していないと思います。

template <typename T>
int doit(T a) {
 return a.do(); // <-- breakpoint here
}
...
A a;
cout << doit(a);

doit(...) を待ち、doit(...) を待つことはないと思います。関数「doit」に設定すると、少なくとも gdb 自体がブレークポイントで停止します。

于 2013-10-21T11:14:37.820 に答える
0

ブレークポイントのタイプが正しいことを確認してください。C/C++ の場合、小さな青い点です。それ以外のように見える場合は、ブレークポイントのタイプが正しくない可能性があります。私はファイルを閉じようとし、それを右クリック - >開く - > C/C++エディタ。これは私にとってはうまくいきました。

于 2012-05-31T07:37:07.307 に答える
0

私は同じ問題を抱えていました、

1.- Removed the breakpoints. 
2.- Restart eclipse 
3.- Clean the project by using project -> clean 
4.- Add again the breakpoints and start your debugging.

これで私の問題は解決しました。

于 2014-11-10T20:42:29.037 に答える