2013-01-23 41 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' - 没有问题:)在您有其他信息予以澄清案件哟你的问题,最好是编辑问题,并将其添加到那里而不是在评论中(尤其是代码很难在评论中阅读)。 **我们仍然需要的一件事是用于设置断点的命令。** –