c++ LLDB显示字符串的“摘要不可用”

kupeojn6  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(110)

所以我有这个错误与一个大的代码,我正在为大学工作,我需要可视化字符串如何得到重新排序,而调试,以便知道我的程序是工作,但调试器只是显示(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";

}

字符串
Debugger
我知道我可以进入__r_std::1.查看字符串的值,但我正在处理超过1万个字符串,我不能像那样逐个验证。
一些细节,我使用MacOS 13.4.1,clang 14.0.3,IDE:Clion 2022.2.5,我尝试了C++ 20和C++ 17。
我希望能够直接从调试器中可视化字符串。

dsf9zpds

dsf9zpds1#

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'是evaluate命令的别名,它可以计算c_str()调用和其他方便的东西。

相关问题