我一直在更新我的Mac工具链,以便利用C ++ 11的功能,并最终获得STL数据结构的漂亮打印调试。我用Homebrew构建了gcc 4.7.2编译器。我已经能够使用这个新的编译器重新编译我当前项目的源代码。但是,我尝试过的所有gdb版本在设置断点,查看源代码或查看局部变量时都会遇到各种问题。
我认为作为Xcode命令行工具版本6.3.50的一部分安装的gdb版本在显示各种基于模板的变量时出现问题。我还构建并尝试使用其他几个gdb版本(7.3.1,7.4.1和7.5.1),但是每个gdb版本都存在一些问题,这些问题使得很难设置断点,查看源代码和查看变量。具体来说,这些gdb版本不知道头文件中定义的源文件或函数行数,不能在这些头文件函数中设置断点,并且许多局部变量已经“优化”。
是否有其他人遇到过这些问题,如果是这样,你能解决这些问题吗?我应该在工具链中使用哪些版本以避免这些问题?
为了记录,我的开发是在最近的MBP上运行最新的Mountain Lion更新。我的IDE是带有CDT版本8.1.1的Eclipse Juno。而且,是的,我已经编写了代码,我已经构建并尝试使用了所有版本的gdb。
感谢您提供任何意见,
鲍勃
答案 0 :(得分:0)
许多局部变量已被“优化”。
在调试优化代码时是否会发生这种情况?如果是这样,那就是预期。您可能以前没有看到过这种情况,因为较旧的GCC并没有那么多优化。
修复:使用-g -O0
标记构建待调试代码。