Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
var create无法创建变量对象 当我调试C++(在cLION)时,我不能监视全局字符串。我试着检查其他类型,但效果很好_C++_Debugging_Clion - Fatal编程技术网

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中得到链接错误