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

问题描述 投票:0回答:1

所以我在大学工作的一个大代码中遇到了这个错误,我需要在调试时可视化字符串如何重新排序,以便知道我的程序正在工作,但调试器只是显示 (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 ...查看字符串的值,但我正在处理超过 10,000 个字符串,我无法像这样一一验证。

一些细节,我使用 MacOS 13.4.1、clang 14.0.3、IDE:Clion 2022.2.5,我尝试使用 c++ 20 和 c++ 17。

我希望能够直接从调试器中可视化字符串。

c++ debugging c++17 c++20 clion
1个回答
0
投票

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() 调用和其他方便的东西。

© www.soinside.com 2019 - 2024. All rights reserved.