var create无法创建变量对象 当我调试C++(在cLION)时,我不能监视全局字符串。我试着检查其他类型,但效果很好
还有,我试过本地弦,我也能看var create无法创建变量对象 当我调试C++(在cLION)时,我不能监视全局字符串。我试着检查其他类型,但效果很好,c++,debugging,clion,C++,Debugging,Clion,还有,我试过本地弦,我也能看 以防万一,该问题现在被跟踪为 根本原因与libstdc++有关。 std::string类型的全局符号被不同地损坏,这反过来又会混淆GDB 在GCC 5.1版本中,libstdc++引入了一个新的库ABI,其中包括std::string和std::list的新实现。这些变化是符合2011 C++标准的,它禁止复制写字符串,需要列表来跟踪它们的大小。 给定以下代码: std::string global_var = "Hi there!"; static std::s
以防万一,该问题现在被跟踪为 根本原因与libstdc++有关。
std::string
类型的全局符号被不同地损坏,这反过来又会混淆GDB
在GCC 5.1版本中,libstdc++引入了一个新的库ABI,其中包括std::string
和std::list
的新实现。这些变化是符合2011 C++标准的,它禁止复制写字符串,需要列表来跟踪它们的大小。
给定以下代码:
std::string global_var = "Hi there!";
static std::string static_var = "Hello";
以下是相关的nm
输出:
0000000000602240 B _Z10global_varB5cxx11
0000000000602280 b _ZL10static_var
一种可能的解决方法是禁用C++11 ABI。在CMakeLists.txt中,在集合(CMAKE\U CXX\U STANDARD 11)
行之后添加以下行(如果有):
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
这使得符号名称被不同程度地损坏,在某种程度上GDB再次感到高兴:
0000000000602238 B global_var
0000000000602248 b _ZL10static_var
不要发布指向文本图像的链接。将实际文本作为文本复制粘贴到问题正文中。请,学习如何创建。至于您的问题,您使用的是什么版本的Clion?我记得早期版本中调试器视图中的
std::string
存在一些问题,但这一问题已经解决了很长一段时间。不推荐使用非常量char*
到字符串文本(要停止您尝试修改字符串文本),请尝试const char*f=“RBYG”代码>最后,你肯定需要阅读。我使用的版本是:2016.3.2,我想这是最新的版本。嘿,艾尔达!谢谢你的回答。如果不使用-D_GLIBCXX_USE_cx11_ABI=0,是否还有其他方法可以解决相同的问题。当我使用使用-D_GLIBCXX_use_cx11_ABI=1编译的库之一时,我编译的程序在开始给出分段错误之前崩溃。提前谢谢@不幸的是,我没有意识到克里希纳柴坦亚。这个建议没有帮助,因为我使用这个标志在opencv中得到链接错误