Как отладить внешнюю библиотеку (OpenCV) в Visual C++?

Я разрабатываю проект в 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 каталоге.

8
задан neuviemeporte 27 April 2010 в 16:26
поделиться

2 ответа

Подводя итог всей деятельности в комментариях: ключом к решению было перестроить библиотеку на VC ++ для получения .pdb (Program Debug Database) файлов для отладки, предварительно скомпилированных библиотек суффиксов "-d" было недостаточно. Тем не менее, библиотеки импорта для библиотечных dll заставили программу загружать предварительно скомпилированные dll из дерева пакетов OpenCV, а не те из моей сборки с информацией .pdb (пути были похожи, поэтому я сначала не заметил). Путь к файлам .pdb был указан в Инструменты | Параметры, но эти файлы не были загружены из-за несоответствия версии модуля (очевидно). Как только я скопировал правильные библиотеки DLL и соответствующие им файлы .pdb в каталог приложения, отладчик начал работать внутри библиотечных функций.

12
ответ дан 5 December 2019 в 10:01
поделиться

Подтвердите: действительно ли вы компилируете библиотеку OpenCV из исходного кода или просто связываете ее?

На ум приходит пара возможностей:

Похоже, отладочная информация для библиотеки OpenCV недоступна (файлы PDB). Возможно, вам придется расширить PATH для ссылки на каталог, содержащий эти файлы. Мне кажется, что есть способ сделать это из VC ++, но я через несколько лет не использую этот инструмент ...

Является ли cvStererCalibrate также «функцией макроса»? Если да, узнайте, к какой реальной функции он относится, и установите точку останова в библиотеке.

Наконец, хотя вы уже сказали об этом, никогда не помешает вернуться и подтвердить, что полная отладка была активирована для всего в проекте, включая внешние библиотеки.

Не знаю, поможет ли это, но это хорошее место для начала.

3
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: