XCode6:无法创建观察点

XCode 6: Unable to create watchpoint

我正在尝试观察以下变量

vector<Vec3f> lines[2];

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

大喊大叫

error: Watchpoint creation failed (addr=0x16fd92d48, size=48, variable expression='lines'). error: watch size of 48 is not supported

其他 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);

...

我用谷歌搜索了这个错误,但没有成功。有人可以阐明这件事吗?

观察点通常是相当有限的资源。你没有说你在调试什么架构,但是 x86_64,例如,只有 4 个硬件观察点寄存器,每个寄存器最多可以观察 8 个字节。因此,无论如何您都无法在 x86_64 上观看 48 字节的区域。

但是你应该可以使用 3 个 8 字节的 watch 来监视一个 24 字节的区域。我在本地试过这个,看起来 watchpoint 设置中有一个错误 - 它不会将大于本机 watchpoint 大小的请求分配到几个较小的 watches 中。所以你必须手动将请求分解成 1/2/4/8 字节的块。

我向 Apple 错误报告程序提交了一个错误以跟踪此问题。但是,如果您想跟踪它,请随时在 Apple 的 http://bugreporter.apple.com 网站上提交一个,如果您想跟踪此问题的解决方案,我会复制我的。