2010-06-22 2 views
1

Я пишу addin DLL в C# для хост-приложения, написанного на C++ (у меня нет источника для хост-приложения). Когда я запускаю приложение-хост, он загружает мою DLL для использования в течение этого сеанса. В последнее время я видел следующее сообщение об ошибке при выходе из хост-приложения:Как отлаживать C++ Runtime Ошибка, вызванная моей DLL?

Microsoft Visual C++ Runtime Library 
Runtime Error! 
Program: MyHostApp.exe 

This application has requested the Runtime to terminate it in an unusual way... 

Этот диалог содержит только кнопку «OK» (кнопка отладки). После нажатия кнопки «ОК» хост-приложение выходит без указания каких-либо ошибок.

Я нашел это StackOverflow нити с подобной проблемой ...

How to debug a Visual C++ Runtime Error

Но всякий раз, когда я пытаюсь прикрепить VS2008 к упавшему приложению, а затем сделать «перерыв все», как указано, я только получить следующее сообщение от VS:

«. Невозможно разорвать выполнение Этот процесс не исполняемую в данный момент тип кода, который вы выбрали для отладки»

Как мне подойти к отладке?

ответ

0

Вы пытались установить параметр «Исходный код» при запуске отладчика?

+0

Если вы имеете в виду «Инструменты | Параметры | Отладка | Just-In-Time | Native», да, это проверено. –

+0

А, я думаю, я понимаю, что вы имеете в виду ... В диалоговом окне «Прикрепить к процессу» я могу выбрать «Исходный код». Выполнение этого заставляет меня пройти начальное сообщение, упомянутое в OP. Однако теперь, когда я делаю «break all», я получаю «Никакие символы не загружаются для любого стека стека вызовов. Исходный код не может быть отображен». Я предполагаю, что это имеет смысл, поскольку у меня нет источника или символов для сбойного приложения-хоста. Я уверен, что что-то в моей DLL заставляет хозяина сбой, я просто не знаю, как его найти ... –

0

C# не генерирует собственный код! Даже если приложение является родным, C# выполняется внутри вложенной среды CLR. Выберите «Управляемый код».

Кроме того, вместо «Разбить все» установите разрыв во всех возможных исключениях, а затем выполните его сбой.