C++ gdb:设置断点的内部错误

C++ gdb:设置断点的内部错误,c++,gdb,warnings,breakpoints,C++,Gdb,Warnings,Breakpoints,我的程序是用-g标志编译的。我有以下问题: 1) 我在头文件中的函数中设置了断点 断点可以工作。现在,当我升级到两级时,它应该将我带到一个C文件(Sizer.C:505)。确实如此,但我收到了很多警告: warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) warning: (Internal error: pc 0xff6324 in read in psymtab, but not in s

我的程序是用
-g
标志编译的。我有以下问题:

1) 我在头文件中的函数中设置了断点

断点可以工作。现在,当我升级到两级时,它应该将我带到一个C文件(Sizer.C:505)。确实如此,但我收到了很多警告:

warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6324 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
#2  0x0000000000ff6324 in SizePacketImpl<ZValue>::begin_x (this=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
0x4888a88, bi=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
0x56e6968) at Sizer.C:505
505         ASSERTo(...some parameters ....);
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
程序根本不会在断点处停止

3) 为了完整起见:如果在程序运行之前在Sizer.C中设置断点,我不会得到警告,但程序仍然不会中断


我想在Sizer.C中设置断点。如何调试和修复此问题?

这似乎是gdb中的一个错误。查看此页面:了解更多详细信息。 您使用的gdb版本是什么?请尝试升级到最新版本,然后重试。升级应该可以解决您的问题

[更新]

我还发现了以下链接:

这里提到了一种变通方法。试着对前面提到的代码进行注释

if (low == 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) == 0) > return 0; 

我使用的是6.3.0。对不起,我不明白你的解决方法。我应该把它放在哪里?我认为更新部分与这个特殊情况无关。它与手动编译gdb有关。请忽略它。升级到7.1解决了这些问题。谢谢:)
if (low == 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) == 0) > return 0;