Я разрабатываю проект в VC ++ 2008. Проект пользуется библиотекой OpenCV (но я предполагаю, что это относится к любой другой библиотеке). Я работаю с Настройкой отладочного процесса, свойства компоновщика включают отладочные версии .lib's библиотеки как дополнительные зависимости. В VC ++ Каталоги под Tools|Options я настроил включать каталог, .lib каталог, исходные каталоги для библиотеки также. Я получаю ошибку при вызывании одной из функций из библиотеки, и я хотел бы видеть точно, что делает та функция. Строка, которая производит ошибку:
double error = cvStereoCalibrate(&calObjPointsM, &img1PointsM, &img2PointsM,
&pointCountsM,
&cam1M, &dist1M, &cam2M, &dist2M, imgSize, &rotM, &transM, NULL, NULL,
cvTermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 100, 1e-5));
Я настроил точку останова в этой строке, чтобы видеть, как cvStereoCalibrate () функционируют сбои. К сожалению, отладчик не покажет исходный код для этой функции, когда я поразил "Шаг в". Это сразу пропускает к cvTermCriteria () (который является простым встроенным, макросвоего рода функцией), и покажите ее содержание. Есть ли что-либо еще, что я должен сделать, чтобы смочь ввести внешние библиотечные функции в отладчик?
Править: Я думаю cvTermCriteria () функциональные шоу в отладчике, потому что он определяется в заголовочном файле, поэтому сразу доступном для проекта.
EDIT2: .pdb файлы отсутствовали для файлов библиотеки, теперь я перекомпилировал библиотеку OpenCV в Visual C++ в Настройке отладочного процесса, .pdb файлы существуют, но все еще так или иначе невидимы для отладчика:
Загруженный 'C:\Users\DarekSz\Documents\Visual Studio 2008\Projects\libcci\Debug\ccisample.exe', загруженные Символы.
'ccisample.exe': Загруженный 'C:\Windows\SysWOW64\ntdll.dll'
'ccisample.exe': Загруженный 'C:\Windows\SysWOW64\kernel32.dll'
'ccisample.exe': Загруженный 'C:\Windows\SysWOW64\KernelBase.dll'
'ccisample.exe': Загруженный 'C:\OpenCV2.1\bin\cv210d.dll'
'ccisample.exe': Загруженный 'C:\OpenCV2.1\bin\cxcore210d.dll'
Символы не загружаются, по-видимому, для opencv dlls. Однако, .pdb файлы существуют в \bin каталоге.
Подводя итог всей деятельности в комментариях: ключом к решению было перестроить библиотеку на VC ++ для получения .pdb (Program Debug Database) файлов для отладки, предварительно скомпилированных библиотек суффиксов "-d" было недостаточно. Тем не менее, библиотеки импорта для библиотечных dll заставили программу загружать предварительно скомпилированные dll из дерева пакетов OpenCV, а не те из моей сборки с информацией .pdb (пути были похожи, поэтому я сначала не заметил). Путь к файлам .pdb был указан в Инструменты | Параметры, но эти файлы не были загружены из-за несоответствия версии модуля (очевидно). Как только я скопировал правильные библиотеки DLL и соответствующие им файлы .pdb в каталог приложения, отладчик начал работать внутри библиотечных функций.
Подтвердите: действительно ли вы компилируете библиотеку OpenCV из исходного кода или просто связываете ее?
На ум приходит пара возможностей:
Похоже, отладочная информация для библиотеки OpenCV недоступна (файлы PDB). Возможно, вам придется расширить PATH для ссылки на каталог, содержащий эти файлы. Мне кажется, что есть способ сделать это из VC ++, но я через несколько лет не использую этот инструмент ...
Является ли cvStererCalibrate также «функцией макроса»? Если да, узнайте, к какой реальной функции он относится, и установите точку останова в библиотеке.
Наконец, хотя вы уже сказали об этом, никогда не помешает вернуться и подтвердить, что полная отладка была активирована для всего в проекте, включая внешние библиотеки.
Не знаю, поможет ли это, но это хорошее место для начала.