gdb无法设置断点

gdb无法设置断点,gdb,g++,debugging,xerces,Gdb,G++,Debugging,Xerces,我正在使用g++4.1.2和GDB7.2 我正在调试使用Xerces的代码,我使用相同的工具构建了Xerces,但可能没有调试 GDB很好地完成了我的代码,但当然没有完成Xerces,因为它可能没有调试信息,而且肯定不知道源目录在哪里。但我只想在Xerces(回调解析器)调用回调对象时设置一个断点 它们的基类是DefaultHandler 我有一个类ContentHandlerBase:PublicDefaultHandler 然后叶类继承自ContentHandlerBase。例如,这些叶类位

我正在使用g++4.1.2和GDB7.2

我正在调试使用Xerces的代码,我使用相同的工具构建了Xerces,但可能没有调试

GDB很好地完成了我的代码,但当然没有完成Xerces,因为它可能没有调试信息,而且肯定不知道源目录在哪里。但我只想在Xerces(回调解析器)调用回调对象时设置一个断点

它们的基类是DefaultHandler

我有一个类ContentHandlerBase:PublicDefaultHandler 然后叶类继承自ContentHandlerBase。例如,这些叶类位于命名空间A中

在gdb中,我尝试设置一个断点

b A::LeafContentHandler::LeafContentHandler b A::LeafContentHandler::endElement

第一个断点工作,因为代码是内联的(在头中定义)

第二个断点不起作用,这意味着gdb声称不存在这样的符号,尽管它显然存在。它是Xerces库中定义的一个虚拟函数,如果这有区别的话。在我重新编译Xerces之前,它是用g++3.4.6构建的,我在gdb中找不到符号。现在,gdb找到了这个符号(我可以点击tab),但它说它不存在,我应该等待库加载

有人能告诉我要怎么做才能让它工作吗?我不希望用调试构建所有Xerce


请注意,在某些情况下,构造函数位于.cpp文件中,出于某种原因,它也可以工作,然后,由于它位于同一文件中,我可以在linenumber处设置后续断点,这就成功了。

试试gdb 7.1——在gdb 7.2中,按函数名设置断点似乎有一些问题。

这是宏扩展的结果吗?gdb似乎不适合宏。