簡體   English   中英

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

[英]inspect C++ std::set in VSCode with LLDB

這是VSCode的特定問題。

自VSCode回購以來,在這里提出問題就指向了SO的問題。

在Mac OS和LLDB上使用VSCode

我試圖弄清楚如何檢查 std::set

我找不到任何相關文檔; 我發現了一些使用宏通過GDB做到這一點的方法( https://sourceware.org/ml/gdb/2008-02/msg00064/stl-views.gdb

但是我無法讓GDB與VS Code一起使用(使用了WebFreak本機調試擴展,但是在運行時,我只是獲得了“正在運行的可執行文件”,沒有任何反應,沒有錯誤,沒有日志,因此我放棄了)

到目前為止,LLDB對我來說一直很好(使用-DDEBUG=2標志使符號正常工作),但是在variables框架中嘗試打開set時,我什么也看不到。

我只得到其中的物品數量。

是否有與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的“機器接口”層的仿真,在這種情況下,它將無法訪問數據格式化程序的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM