2015-07-12 3 views
0

Я пытаюсь смотреть следующую переменнуюXCode 6: Невозможно создать точку наблюдения

vector<Vec3f> lines[2]; 

в XCode (где Vec3f является OpenCV тип данных, вектор из 3-х поплавков). Но когда я щелкните правой кнопкой мыши переменную в переменной View и выберите 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); 

... 

Я ошибся с ошибкой без ошибок. Может ли кто-нибудь пролить свет на этот вопрос?

ответ

2

Контрольные точки в целом довольно ограниченные ресурсы. Вы не сказали, какую архитектуру вы отлаживали, но x86_64, например, имеет только 4 аппаратных регистратора точек наблюдения, которые могут смотреть не более 8 байтов каждый. Таким образом, вы не сможете смотреть 48-байтовый регион на x86_64 в любом случае.

Но вы должны быть в состоянии наблюдать 24-байтовый регион, используя 3 8-байтовых часов. Я пробовал это локально, и похоже, что в настройке watchpoint есть ошибка - он не рассылает запрос большего размера, чем собственный размер точки наблюдения, на несколько меньших часов. Таким образом, вам нужно разбить запрос на 1/2/4/8 байта вручную.

Я подал ошибку, чтобы отслеживать это с репортером Apple. Но если вы хотите отслеживать его, не стесняйтесь записывать его на сайт Apple http://bugreporter.apple.com, если вы хотите отслеживать его разрешение, и я приду к нему.