[英]How to make LLDB work with STL in CLion on MacOS as I would expect on Linux
我想要完成的是在 CLion 中輕松調試 C++ 代碼,就像我在 Linux 上一樣。 我將使用以下代碼進一步說明:
set<int> time;
time.insert(1);
size_t qq = time.size();
我使用捆綁的 LLDB 和 GDB 調試器附上我的屏幕截圖(分別是附件lldb
和gdb
)。
由於 Apple 放棄了對 GDB 的支持,我必須安裝 8.0.1 版,對其進行代碼設計等才能使其正常工作。 我期待我在 Linxu 機器上得到的行為(帶有捆綁的 GDB)(分別expected
附件)。 我真的很想能夠看到我的集合的大小!
如附件lldb
和gdb
所示,macOS 上的 LLDB 和 GDB都存在此問題(盡管在 Linux 上沒有問題)。 我決定嘗試為 macOS 獲取 GDB 只是因為 LLDB 調試器沒有按預期工作,我希望它是一個特定於調試器的問題。
調用 vector::size() 的問題實際上不是調試器問題,而是 STL 的 clang 實現問題。 此處討論了此問題的另一個版本:
使用 Xcode/LLDB 打印/調試 libc++ STL
請注意,最新版本的 clang STL(Xcode 12 中的那個)對內聯的攻擊性要小得多。 使用 Xcode 12,我可以運行expr my_vec.size()
和expr my_vec[0]
等等,並且 lldb 確實有一個 function 可以調用(並成功調用它!)
由於這是編譯器和庫的問題,因此您必須升級用於構建的工具才能獲得此修復。
此外,如果您只將變量放在手表 window 中,而不是variable.size()
CLion 將打印變量摘要,即大小。 如果您需要在 lldb 表達式中使用大小,那將無濟於事(將其傳遞給其他一些 function 或測試它是否 > 5...)但是變量的摘要格式化程序將向您顯示它的大小並且這樣做更有效而不是調用 size 方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.