这是VSCode特定的问题。
在这里问,因为VSCode回购指向在SO上提问。
我在Mac OS上使用 VSCode,使用LLDB 。
我试图找出如何检查 std::set
。
我找不到任何关于此的文件;我找到了一些使用宏(https://sourceware.org/ml/gdb/2008-02/msg00064/stl-views.gdb)
使用GDB的方法但是我无法让GDB与VS Code一起使用(使用了WebFreak Native Debug扩展,但在运行中我只是得到了#34;运行可执行文件"没有任何事情发生,没有错误,没有日志,所以我放弃了)
到目前为止,LLDB对我有用(使用-DDEBUG=2
标记来使符号正常工作),但在set
帧中尝试打开variables
时,我什么也看不到。
我只获得其中的物品数量。
是否有与GDB类似的宏来检查LLDB中的集合?或者还有其他方式吗?
由于
答案 0 :(得分:0)
lldb使用“数据格式化程序”来打印漂亮的对象。参见:
http://lldb.llvm.org/varformats.html
了解更多详情。
lldb具有来自clang标准库的std :: set的内置数据格式化程序。如果VSCode使用该版本的C ++标准库,则数据格式化程序应自动触发。如果VSCode允许您访问lldb命令行,则可以检查std :: set data formatter:
(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的“机器接口”层,在这种情况下它将无法访问数据格式化程序结果