2013-04-04 2 views
1

У меня есть основное приложение (на C#), которое анализирует базу данных изображений, а затем передает эти изображения в C++ DLL для их анализа. Теперь по некоторым причинам каждые 200 изображений или около того он выдает ошибку. Это не всегда вызывает ошибку на одном и том же изображении, но только на случайном изображении (иногда изображение проходит через анализ, а в другое время оно вызывает ошибку).Отладка проблемы в базовой C++ DLL

Могу ли я каким-то образом сделать свою библиотеку DLL исключение из C# GUI с информацией о том, где в коде C++ возникает ошибка? Сам код должен работать нормально, и я не могу найти, откуда исходит ошибка, поэтому мне нужна помощь от DLL, чтобы определить, по крайней мере, где это происходит.

Любая помощь была бы оценена, я ничего не нашел на этом пока.

+2

У вас есть доступ к источнику DLL? Если нет, то нет. – 2013-04-04 20:57:41

+0

Или, по крайней мере, файлы символов. Попробуйте взять дамп и запустить его через WinDbg. –

+0

. Можете ли вы включить просмотр разборки в Visual Studio, чтобы вы могли отлаживать DLL C++ при возникновении ошибки? –

ответ

3

Просто используйте отладчик, чтобы диагностировать это. Включите неуправляемый отладчик с вкладкой «Проект + Свойства», «Отладка», отметьте опцию «Включить неуправляемый отладочный код».

«это порождает ошибку» слишком смутно, чтобы дать конкретный совет. Но вы захотите проверить флажок «Бросок» в диалоговом окне «Отладка + Исключения». Отметьте «Исключения C++» и/или «Исключение Win32», в зависимости от типа генерируемого исключения. Если вы этого не знаете, отметьте их все.

+0

Ницца, это сработало отлично! – SinisterMJ

0

Если вы не в состоянии получить ошибку при отладке его, в вашем C++ DLL записать в выходной функции, что вы находитесь.

Например, если у вас есть func1, func2, FUNC3 в DLL, то выписывайте их имена каждый раз, когда вы входите и выходите из каждой функции. Когда вы запускаете программу, вы сможете сузить ее до функции, вызывающей исключение, тогда вы можете добавить похожие результаты после каждой строки функции, чтобы найти код, который бросает исключение.

Смежные вопросы