所以我在大学工作的一个大代码中遇到了这个错误,我需要在调试时可视化字符串如何重新排序,以便知道我的程序正在工作,但调试器只是显示 (stringVariableName) = 摘要不可用。我创建了这段小代码来测试独立的字符串、向量和整数,看看它是否有区别,但它只显示整数。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<string> testString = {"test1", "test2", "test3"};
vector<int> testInt = {1,2,3};
string test = "test1";
}
我知道我可以进入 __r_std::1 ...查看字符串的值,但我正在处理超过 10,000 个字符串,我无法像这样一一验证。
一些细节,我使用 MacOS 13.4.1、clang 14.0.3、IDE:Clion 2022.2.5,我尝试使用 c++ 20 和 c++ 17。
我希望能够直接从调试器中可视化字符串。
Mac std::string 具有 22 字节短字符串优化限制。这是打印短字符串的示例...
(lldb) v inputName
(std::string) inputName = Summary Unavailable
(lldb) p inputName
(std::string) inputName = Summary Unavailable
(lldb) p inputName.c_str()
(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type *) $0 = 0x00007ff7bfef75c9 "n4"
使用“p”而不是“v”。 'v' 打印帧变量,但它没有完整的表达式解析器。 'p' 是评估命令的别名,它可以评估 c_str() 调用和其他方便的东西。