我正在尝试观看以下变量

vector<Vec3f> lines[2];

在XCode中(其中Vec3f是OpenCV数据类型,是3个浮点的 vector )。
但是,当我在“变量 View ”中右键单击该变量并选择Watch "lines"时,我被XCode大吼:



这似乎也发生在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字节手表来监视24字节区域。我在本地尝试过,看来监视点设置中有一个错误-它不会将大于本机监视点大小的请求划分为几个较小的手表。因此,您必须手动将请求分解为1/2/4/8字节的块。

我向Apple Bug记者提交了一个bug来跟踪此问题。但是,如果要跟踪它,可以跟踪苹果的http://bugreporter.apple.com网站上的文件,如果要跟踪它的分辨率,可以随意提交,我将对此进行介绍。

10-01 10:44
查看更多