使用LLDB检查VSCode中的C ++ std :: set

时间:2017-07-19 16:29:37

标签: c++ debugging visual-studio-code lldb stdset

这是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中的集合?或者还有其他方式吗?

由于

1 个答案:

答案 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的“机器接口”层,在这种情况下它将无法访问数据格式化程序结果