c++ - 模板函数内的断点,Eclipse CDT Kepler

标签 c++ eclipse debugging gdb

我知道这个问题以前可能有人问过,但是我没有找到满意的答案。我的问题如下:我正在 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/

相关文章:

c++ - 为什么用C++中的链表完成此操作? (像堆栈一样处理它们)

android - 在 Eclipse 中有 1 个可绘制文件夹而不是 3 个

c++ - 并非所有类型的成员都初始化时,可以复制普通类型的类吗?

java - 我无法将 Tomcat webapp 配置为能够在 Eclipse 上进行调试

eclipse - 如何将fomatter和模板设置应用到Eclipse中的多个项目?

python - gevent猴子补丁和断点

android - 如何在eclipse中调试NDK,我想用Sequoyah来调试我的原生vode,但是有一些问题?

ruby-on-rails - 在 Vim 中使用 Pry 的 vim-ruby-debugger 样式断点

c++ - 第二个 IntObject.getValue() 的返回值错误

c++ - 要优化的 CUDA 内核