这是VSCode的特定问题。
自从VSCode回购以来,在这里询问就提出了关于SO的问题。
我在Mac OS和LLDB上使用VSCode。
我试图弄清楚如何检查std::set
。
我找不到任何相关文档;我发现了一些使用宏(https://sourceware.org/ml/gdb/2008-02/msg00064/stl-views.gdb)与GDB一起使用的方法
但是我无法让GDB与VS Code一起使用(使用了WebFreak本机调试扩展,但是在运行时,我只是获得了“正在运行的可执行文件”,没有任何反应,没有错误,没有日志,所以我放弃了)
到目前为止,LLDB对我来说一直很好(使用-DDEBUG=2
标志使符号正常工作),但是尝试在set
框架中打开variables
时我什么也看不到。
我只得到其中的物品数量。
是否有与GDB类似的宏来检查LLDB中的集?还是有其他方法?
谢谢
最佳答案
lldb使用“数据格式化程序”来漂亮地打印对象。看到:
http://lldb.llvm.org/varformats.html
更多细节。
lldb具有来自clang标准库的std :: set内置数据格式化程序。如果VSCode使用该版本的C ++标准库,则数据格式化程序应自动触发。如果VSCode允许您访问lldb命令行,则可以这样检查std :: set数据格式化程序:
(lldb) fr v my_set
(std::__1::set<int, std::__1::less<int>, std::__1::allocator<int> >) my_set = size=3 {
[0] = 100
[1] = 200
[2] = 300
}
如果看到元素破裂,则数据格式化程序正在运行(并且您可以使用控制台来查看它们。)如果它们使用其他版本的STL,则上面的链接将使您开始为其对象布局编写数据格式化程序。 。
数据格式化程序还可以连接到API的lldb提供来检查值,但是VSCode可能正在使用lldb对gdb的“机器接口”层的仿真,在这种情况下,它将无法访问数据格式化程序的结果。