1

OSとしてopenSUSEを使用し、gdb7.5を使用しています。ブレークポイントを使用して、gdbを使用してプログラムをデバッグしたいと思います。しかし、ブレークポイントを作成してからプログラムを実行すると、gdbは次のように通知します。

Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".cpp"

私のすべてのプログラムで同じです。また、ブレークポイントまで実行しても、プログラムはまったく停止しません。誰かが私に何が悪いのか教えてもらえますか?

最新のgdbをダウンロードしてインストールすると、前のメッセージは消えますが、gdbを実行すると次のように表示されます。

warning: Could not load shared library symbols for linux-gate.so.1. Do you need "set solib-search-path" or "set sysroot"?

この問題を解決する方法は?

4

2 に答える 2

1

「b + linenumber」を使用します

これは、現在の行に相対的なブレークポイントを定義します。場所の指定を参照してください。以下のコメントのコードを使用すると、次のように機能します。

$ gdb ./main
(gdb) b +5
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
(gdb) run
[New Thread 1528.0x1930]

Breakpoint 1, main () at main.cpp:5
5           while(scanf("%d%d",&a,&b)!=EOF)

相対行番号を指定する正当な理由がない限り、絶対行番号または関数名を使用することをお勧めします。

(gdb) b main
Breakpoint 1 at 0x401395: file main.cpp, line 3.
(gdb) b main.cpp:6
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
于 2013-01-23T14:02:25.027 に答える
0

gdb 7.5 には既知のバグがあり、ソース ファイル名が 10 進数で始まる場合にデバッガーが linespec の解析に失敗します。詳細については、このメッセージを参照してください。

ファイルの名前を変更して、配布リポジトリから gdb を更新してみてください。バグが続く場合は、ディストリビューションのメンテナーにバグを報告してください。

bugzillaに提出されたバグ レポートのサンプル セッションを参照してください。gdb

(gdb) b 3
Breakpoint 1 at 0x4004c3: file 2.c, line 3.
(gdb) r
Starting program: /home/teawater/tmp/a.out 
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
于 2013-01-23T15:10:45.450 に答える