GDB无法设置断点

问题描述:

我使用G ++ 4.1.2和GDB 7.2GDB无法设置断点

我调试使用Xerces,这是我使用相同的工具内置的代码,但想必无需调试。

GDB逐步通过我的代码很好,但当然不通过Xerces,因为它可能没有调试信息,并且肯定不知道源目录的位置。但我想要的是当Xerces(一个回调解析器)调用一个回调对象时设置一个断点。

其基类的DefaultHandler

我有一个类ContentHandlerBase:公众的DefaultHandler 然后叶类从ContentHandlerBase继承。这些叶子类在命名空间A内部,例如

in gdb我尝试设置一个断点。

B A :: LeafContentHandler :: LeafContentHandler B A :: LeafContentHandler ::的endElement

第一断点作品因为代码是内联(在报头中定义的)。

第二个断点不起作用,这意味着gdb声称不存在这样的符号,即使它明显存在。这是一个在Xerces库中定义的虚拟函数,如果这有所作为。在我重新编译Xerces之前,它是用g ++ 3.4.6编译的,我在gdb中找不到符号。现在,gdb找到了符号(我可以打开制表符),但它说它不存在,我应该等待库加载。

任何人都可以告诉我要做些什么吗?我不想用调试来构建所有的xerces。请注意,在某些情况下,使用.cpp文件中的构造函数,它也出于某种原因起作用,然后,因为它位于同一个文件中,所以我可以在linenumber中设置一个后续断点,并且工作正常。

+0

是这样吗?似乎gdb不适合宏。 – g24l 2015-11-24 11:39:55

尝试GDB 7.1 - 它似乎有在GDB通过函数名设置断点一些问题,从宏观扩张任何机会7.2

+0

我会给这个怀疑的好处,虽然我没有尝试... – Dov 2011-03-18 20:26:08