【问题标题】:XCode 6: Unable to create watchpointXCode 6:无法创建观察点
【发布时间】:2015-09-30 22:48:10
【问题描述】:

我正在尝试观察以下变量

vector<Vec3f> lines[2];

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

错误:观察点创建失败(地址=0x16fd92d48,大小=48,变量 表达式='行')。错误:不支持 48 的手表尺寸

vector&lt;T&gt; 类型的其他变量似乎也会发生这种情况,但前提是它是局部变量。我可以看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);

...

我用谷歌搜索了错误,但没有成功。有人能解释一下吗?

【问题讨论】:

    标签: c++ ios xcode lldb


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-27
      • 2015-10-03
      • 1970-01-01
      • 2015-08-02
      • 2023-04-10
      • 1970-01-01
      • 2012-10-29
      • 2015-11-20
      相关资源
      最近更新 更多