模板函数内部的断点,Eclipse CDT开普勒

Breakpoint inside template function, Eclipse CDT Kepler

本文关键字:Eclipse CDT 开普勒 断点 函数 内部      更新时间:2023-10-16

我知道以前可能有人问过这个问题,但我没有找到任何令人满意的答案。我的问题是:我正在Eclispe CDT开普勒下开发C++。我使用g++4.8.2作为编译器,使用ggdb 7.6作为调试器(均通过macports安装),所以不使用OS X附带的clang工具(我的操作系统是OS X Mavericks)。

现在,在Eclipse中,我可以设置断点,并在除模板函数外的任何地方进行逐步调试(模板函数内的断点被忽略)。模板函数在实现文件(.cpp扩展名)中定义,是独立的函数,而不是任何类的成员。我还用ggdb作为调试工具设置了qt creator,得到了相同的行为,断点在模板函数中被忽略,并得到了以下警告(仅当试图在模板函数添加断点时):

&"warning: GDB: Failed to set controlling terminal: Operation not supported on socketn"

所以,这一定是一个ggdb问题。

苹果默认的llvm可以使用,但我必须使用g++,因为它支持OpenMP,并且不能将llvmg++结合使用。

你有没有遇到这种烦人的行为?这是ggdb的已知问题吗?您知道这个问题的任何解决方案吗,即使用g++编译时如何在模板函数中设置断点?

谢谢!

我不记得gdb 7.6中这个区域有什么特定的bug。

通常,如果出现这种问题,是由于缺少debuginfo——编译器问题,而不是调试器问题。然而,这里没有足够的信息来真正了解。

当我遇到这样的问题时,我通常使用objdump来查看debuginfo并搜索我感兴趣的函数。