Windows下LLDB调试std::string出现summary string parsing error求助
LLDB调试std::string出现「error: summary string parsing error」的问题解决(Windows+LLVM+MSVC环境)
问题描述
在Windows系统中使用LLVM搭配MSVC环境,通过clang++编译C++程序后,使用LLDB调试查看std::string变量时,出现error: summary string parsing error错误。已尝试添加-fstandalone-debug编译选项,问题仍未解决。
测试代码
#include <iostream> #include <string> int main() { std::string a = "Lorem ipsum\n"; std::cout << a; }
调试输出
Process 8652 stopped * thread #1, stop reason = step over frame #0: 0x00007ff671e1102a main.exe`main at main.cpp:245 3 int main() 4 { 5 std::string a = "Lorem ipsum\n"; -> 6 std::cout << a; 7 } (lldb) v a (std::basic_string<char,std::char_traits<char>,std::allocator<char> >) a = error: summary string parsing error
工具版本
- clang++ version 16.0.6
- lldb version 16.0.6
解决思路
1. 加载MSVC专用STL调试脚本
LLDB依赖Python脚本解析STL类型的显示格式,默认脚本可能未适配MSVC的STL结构。手动导入LLVM自带的MSVC STL脚本:
- 在LLDB会话中执行:
command script import "C:\Program Files\LLVM\lib\lldb\scripts\VisualStudio\stl.py" - 若需永久生效,将上述命令添加到LLDB初始化文件
%USERPROFILE%\.lldbinit中。
2. 调整编译选项以适配MSVC
确保编译时启用MSVC兼容模式,避免LLDB解析符号时出现结构不匹配:
- 编译命令示例:
clang++ -g -fms-compatibility -fms-extensions main.cpp -o main.exe - 关键选项说明:
-fms-compatibility:启用对MSVC语法和ABI的兼容支持-fms-extensions:启用MSVC特有的语言扩展
3. 升级LLVM/LLDB版本
LLDB对MSVC STL的调试支持在后续版本中持续优化,升级到17.x及以上的稳定版,大概率能修复该解析错误。
4. 临时查看字符串内容的替代方案
若上述方法暂时无法生效,可通过内存读取直接获取字符串内容:
- 查看
std::string内部缓冲区指针:p a._Mypair._Myval2._Bx._Buf - 直接读取内存中的字符串:
memory read --format s &a
内容的提问来源于stack exchange,提问作者narcomoeba
相关产品推荐
相关产品推荐

