2013-01-23 130 views
1

我使用openSUSE作爲我的操作系統和gdb 7.5。我想用gdb和斷點來調試我的程序。但是,當我做一個斷點,然後運行我的程序,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"? 

如何解決售後服務這個問題?

+2

你正在使用哪個命令來設置斷點? –

+0

我使用「b + linenumber」 – yvxiang

回答

0

gdb 7.5中存在一個已知的錯誤,即當源文件名以十進制數字開頭時,調試器無法解析linespec。詳情請參閱this message

嘗試重命名該文件並從配送庫中更新gdb。如果問題仍然存在,請向發行版維護人員提交錯誤報告。

查看bug report提交到gdb bugzilla的示例會話。

(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" 
+0

謝謝。我試圖重命名該文件,並且該消息消失,並且斷點工作。非常感謝你。 – yvxiang

+0

我下載最新的gdb並安裝它,前面的消息已經消失,但是當運行gdb時,它告訴我: 警告:無法爲linux-gate.so.1加載共享庫符號。你需要「設置solib-search-path」或「set sysroot」嗎? 如何解決這個問題? – yvxiang

+0

'linux-gate.so。1'不是真正的庫,而是由內核導出的虛擬庫。在64位系統和更新的內核中,它被替換爲'linux-vdso.so.1'。看起來像一個libc不兼容。 –

1

I use "b + linenumber"

這定義斷點相對於當前行,見ALS Specifying a Location。從下方的註釋中的代碼,下面將工作:

$ 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. 
+0

感謝您的回覆。我嘗試你的代碼,這是沒有問題的。但考慮以下簡單的代碼我用(原諒我的第一次使用stackoverflow)我還收到消息「錯誤重新設置斷點1:畸形的一個linespec錯誤:意想不到字符串 「的.cpp」 的#include INT主() { \t INT A,b; \t而(scanf函數( 「%d%d」,&一個,和b)= EOF) \t \t的printf( 「%d \ n」,A + b); \t返回0;} ' – yvxiang

+0

原諒我第一次使用stackoverflow' - 沒有問題:)在您有其他信息予以澄清案件喲你的問題,最好是編輯問題,並將其添加到那裏而不是在評論中(尤其是代碼很難在評論中閱讀)。 **我們仍然需要的一件事是用於設置斷點的命令。** –