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

09-06 11:18