XCode 6:无法创建观察点

时间:2015-07-12 17:08:04

标签: c++ ios xcode lldb

我正在尝试观看以下变量

vector<Vec3f> lines[2];

在XCode中(其中Vec3f是OpenCV数据类型,3个浮点数的向量)。 但是当我在变量视图中右键单击变量并选择Watch "lines"时,我被XCode大喊:

  

错误:观察点创建失败(addr = 0x16fd92d48,size = 48,变量   表达式=#39&;线条&#39)。错误:不支持手表大小48

这似乎与vector<T>类型的其他变量一起发生,但仅当它是局部变量时才会发生。我可以看到传入的vector作为方法参数就好了。

double computeReprojectionError(vector<Point2f>& imgpts1, vector<Point2f>&   imgpts2, Mat& inlier_mask, const Mat& F)
{
                                              // ^ I can watch this guy
    vector<Vec3f> lines[2]; // <- I cannot watch this guy (size 48)

    vector<Point2f> imgpts1_copy(npt), // <- I cannot watch this guy (size 24)
    imgpts2_copy(npt);

...

我用Google搜索错误但没有成功。有人可以解释这个问题吗?

1 个答案:

答案 0 :(得分:3)

观察点通常资源相当有限。你没有说出你正在调试的架构,但是x86_64只有4个硬件观察点寄存器,每个寄存器最多只能看8个字节。因此,在任何情况下,您都无法在x86_64上观看48字节区域。

但是你应该能够通过使用3个8字节的手表来观察24字节区域。我在本地试过这个,看起来在观察点设置中有一个错误 - 它不会将比原始观察点大小更大的请求分成几个小手表。因此,您必须手动将请求分解为1/2/4/8字节块。

我提交了一个错误来跟踪Apple bug记者。但是如果你想跟踪它,可以随意在Apple的http://bugreporter.apple.com网站上提交一个,如果你想跟踪它的解决方案,我会把它复制到它。