我试图观察以下变量
vector<Vec3f> lines[2];
在XCode(其中Vec3f
是一个OpenCV数据类型,3个浮点数的向量)。但是当我在变量视图中右键单击变量并选择Watch "lines"
时,XCode会对我大喊大叫:
错误:Watchpoint creation failed (addr=0x16fd92d48, size=48,变量)表达="线")。错误:手表尺寸不支持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);
...
我用谷歌搜索了这个错误,没有成功。有人能解释一下这件事吗?
观察点通常是相当有限的资源。您没有说明要调试的是哪种体系结构,但是,例如x86_64,它只有4个硬件观察点寄存器,每个最多只能观察8个字节。所以无论如何,您都无法在x86_64上观察到48字节的区域。
但是您应该能够通过使用3个8字节的手表来监视24字节区域。我在本地尝试了一下,看起来观察点设置中有一个bug——它没有将大于本地观察点大小的请求划分为几个较小的观察点。所以你必须手动将请求分解为1/2/4/8字节块。
我向苹果bug报告员提交了一个bug来跟踪这个问题。但如果你想跟踪它,可以在苹果的http://bugreporter.apple.com网站上提交一个如果你想跟踪这个的分辨率,我会把我的放到那里。