【问题标题】:How to make LLDB able to print STL container's content?如何使 LLDB 能够打印 STL 容器的内容?
【发布时间】:2021-10-02 00:41:18
【问题描述】:

我现在可以让我的 LLDB 调试器打印矢量内容,但是 unordered_map 内容的输出远不能令人满意。输出不包含任何键和值。

这是我当前输出的屏幕截图:

有没有办法支持 LLDB 调试器来做到这一点?

【问题讨论】:

    标签: lldb


    【解决方案1】:

    看起来您正在使用 STL 的 libcpp 版本(来自 gcc 的版本)? libcpp 的 lldb 数据格式化程序覆盖范围不如 libcxx(clang 的 STL 实现)数据格式化程序完整。 libcpp 的 map 有一个格式化程序,但 unordered_map 没有。

    您可以在http://bugs.llvm.org 提交 ER 请求添加支持,或者自己尝试添加支持。或者您可以在 Python 中为它制作一个格式化程序供您自己使用。此处描述了该过程(整个页面描述了变量格式化在 lldb 中是如何工作的,然后这是关于在 Python 中进行的部分):

    https://lldb.llvm.org/use/variable.html#python-scripting

    【讨论】:

      【解决方案2】:

      最近添加了对来自 libstdcpp 的许多 STL 类型的支持:

      https://reviews.llvm.org/D113760
      https://reviews.llvm.org/D112537
      https://reviews.llvm.org/D112180
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-07
        • 2013-11-13
        • 2014-08-06
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 2012-07-21
        • 2017-02-02
        相关资源
        最近更新 更多