我知道这个问题以前可能有人问过,但是我没有找到满意的答案。我的问题如下:我正在 Eclispe CDT Kepler 下开发 C++
。我使用 g++4.8.2
作为编译器,使用 ggdb 7.6
作为调试器(都是通过 macports
安装的),所以 >clang
OS X 自带的工具(我的操作系统是 OS X Mavericks)。
现在,在 Eclipse 中,我可以设置断点并在除模板函数之外的任何地方进行逐步调试(模板函数中的断点将被忽略)。模板函数在实现文件(.cpp 扩展名)中定义,并且是独立函数,不是任何类的成员。我还使用 ggdb
设置了 qt creator
作为调试工具,并得到了相同的行为,模板函数中的断点被忽略,并收到以下警告(仅在尝试添加时模板函数中的断点):
&"warning: GDB: Failed to set controlling terminal: Operation not supported on socket\n"
所以,这一定是ggdb
问题。
Apple 默认的 llvm
可以,但我必须使用 g++
因为它支持 OpenMP
,不能使用 llvm
结合 g++
。
您遇到过这种烦人的行为吗?这是 ggdb
的已知问题吗?您是否知道这个问题的任何解决方案,即在使用 g++
编译时如何在模板函数中设置断点?
谢谢!
最佳答案
我不记得 gdb 7.6 中这方面的具体错误。
通常,如果出现此类问题,那是由于缺少调试信息——编译器问题,而不是调试器问题。但是,这里没有足够的信息来真正了解。
当我遇到这样的问题时,我通常会使用 objdump 查看调试信息并搜索我感兴趣的函数。
关于c++ - 模板函数内的断点,Eclipse CDT Kepler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23328687/