17

共有ライブラリを使用する Eclipse CDT C++ アプリケーション プロジェクトがあります。このライブラリはデバッグ情報付きでコンパイルされており、そのソースは正しいパスで入手できます。

今、Eclipse と GDB でアプリケーションをデバッグしようとしています。アプリケーションのソース コードにブレークポイントを配置すれば、すべて問題ありません。次に、含まれている共有ライブラリのソース ファイルを開き、そこにブレークポイントを配置します。デバッグ セッションを起動すると、「読み込まれたシンボルに xxx.cpp という名前のソース ファイルがありません」という警告が表示され、その時点で実行が停止されません。デバッグ セッションが既に実行されているときに同じブレークポイントを同じファイルに配置すると、すべて正常に動作します。なにが問題ですか?

ご協力いただきありがとうございます。

4

2 に答える 2

7

Qt プラグイン (Windows DLL に基づく) でブレークポイントを設定しようとして、同じ問題が発生しました。

私はこの議論を見つけ、解決策は私にとって完璧に機能しましたが、私はあなたよりも新しいバージョンのEclipseを使用していますが、それはほとんど同じ問題のように聞こえます.

http://www.eclipse.org/forums/index.php?t=msg&goto=555294&S=2aed4155e654e34cb2e84a6fb23de9bf#msg_555294

基本的には、遅延ブレークポイントをサポートする古い gdb プロトコルを使用することです。デバッグ構成から「GDB (DSF) Create Process Launcher」の代わりに「Standard Create Process Launcher」を使用すると、すべての DLL ブレークポイントが設定されます。

バージョン: Helios リリース ビルド ID: 20100617-1415

CDT および GDB バージョン 7.0.0。

幸運を!

于 2010-08-27T20:57:12.240 に答える
7

この質問に答えてくれるかもしれない 1 つのトピックを見つけました: なぜ Eclipse CDT はブレークポイントを無視するのですか?

まだロードされていない共有ライブラリにブレークポイントを設定しようとしている可能性があります。ライブラリがロードされるまで、それは機能しません。新しい gdb では遅延ブレークポイントを設定できますが、CDT では (まだ) サポートされていない可能性があります。回避策は、問題の共有ライブラリが既に読み込まれているときに到達する最初から利用可能な場所にブレークポイントを設定することです。次に、共有ライブラリに別のブレークポイントを設定します。これで動作するはずです。少し面倒ですが、通常は機能します。

それは答えでしょうか?CDT v6.0.0.200906161748 と GDB v6.8 を使用しています

于 2009-10-19T09:38:09.730 に答える