我知道之前可能已经问过这个问题,但是我找不到任何满意的答案。我的问题如下:我正在Eclispe CDT Kepler下开发C++
。我使用g++4.8.2
作为编译器,使用ggdb 7.6
作为调试器(均通过macports
安装),因此不是OS X附带的clang
工具(我的操作系统是OS X)小牛)。
现在,在Eclipse中,我可以设置断点并逐步调试模板函数中的EXCEPT(模板函数中的断点只是被忽略)。模板函数在实现文件(.cpp扩展名)中定义,并且是独立函数,而不是任何类的成员。我还将qt creator
与ggdb
设置为调试工具,并获得相同的行为,在模板函数中忽略断点,并获得以下警告(仅在尝试在模板函数中添加断点时): / p>
&"warning: GDB: Failed to set controlling terminal: Operation not supported on socket\n"
因此,它必须是ggdb
问题。
Apple的默认llvm
有效,但我必须使用g++
,因为它支持OpenMP
,并且无法将llvm
与g++
结合使用。
你是否碰到了这种烦人的行为?这是ggdb
的已知问题吗?您是否了解此问题的任何解决方案,即在使用g++
进行编译时如何在模板函数中设置断点?
谢谢!
答案 0 :(得分:1)
我不记得gdb 7.6中这个区域的具体错误。
通常,如果出现这种问题,则是由于缺少debuginfo - 编译器问题,而不是调试器问题。但是,这里没有足够的信息真正了解。
当我遇到这样的问题时,我通常使用objdump来查看debuginfo并搜索我感兴趣的函数。