繁体   English   中英

如何在 CLion 的调试器中查看 C++ 字符串的实际值?

[英]How to see actual value of a C++ string in CLion's debugger?

我在 Linux 上使用 CLion 并且在调试时遇到了困难。 我评估了一个最终成为字符串的表达式,但调试器无法向我展示返回值是什么,除了它是一个字符串。 如何查看实际值? (另请注意,它甚至不显示char值的值)

截屏

使用 gdb,您可以通过以下 2 种方法打印 std::string。

  1. p mystr.c_str() - 这可用于打印 std::string 类型的值。
  2. p *(char**) 0x7f8fbb7a9c20 - 这适用于 std::string 类型的内存。

你可以试试。 在您的项目中打开CMakeLists.txt并找到以下行。

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3")
or
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O3")

现在,如下更改:

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O0")
or
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0")

只需为所需的std::string表达式添加监视并编辑监视以附加.c_str()F2可以正常工作)。

例如,为了检查my_cpp_str变量,添加以下手表:

my_cpp_str.c_str()

这似乎是 LLDB 的一个错误。 您可以检查此问题: https ://youtrack.jetbrains.com/issue/CPP-13701

我试过 GDB,效果很好,所以你可以切换到 GDB 工具链来避免这个问题。


但是2021年,如果非要使用LLDB,可以使用变量std::string mystr;

  • 在 LLDB 控制台中: p *(char**) &mystr
  • 或者,将此表达式*(char**) &mystr到 CLion-2021 调试器的观察程序窗口中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM