LLDB有时会显示矢量数据,而其他时间则不会

Mat*_*ggs 5 c++ xcode vector lldb xcode9

在大多数情况下,在调试时,如果我有一个向量(在Xcode 9中),我会看到一个表示向量中值的索引列表.

期望 在此输入图像描述

其他时候,我得到这个无益的代表:

不希望 在此输入图像描述

我无法弄清楚什么条件会导致LLDB以不合需要的方式显示向量.

问题
导致不良行为的原因是什么?可以在不重写代码的情况下修复吗?这是LLDB中的错误吗?

这是一个简短的代码示例,可以再现不需要的行为:

#include <iostream>
#include <vector>

std::vector<int> createVector()
{
    std::vector<int> v = { 1, 2, 3 };
    return v;
}

int main(int argc, const char * argv[])
{
    const auto& v = createVector();
    std::cout << v.front() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


以下是Xcode项目的链接:http://s000.tinyupload.com/?file_id =
21020556485232357417

Jim*_*ham 3

这是 std::vector 数据摘要和格式化程序如何处理引用变量的已知错误。请注意,在expr v表达式解析器中,实际上认为 v 是一个直向量,而不是对向量的引用......这就是打印起作用的原因。