исключения+ дампы = ловля на живца
От: Аноним  
Дата: 12.07.13 12:11
Оценка:
Итак — есть С++ код, которому надо обратиться к функционалу, работающему только в дотнет библиотеке, чтоб её...
Для этого по совету с MSDN накатали на С++ прокси-dll, в которой идет перевод обращений от С++ в COM объект,
который создан на C# на основе интерфейсных функций из дотнетовской библиотеки. Вроде принципиально все заработало.
НО вдруг стало порой выдавать окно — мол приложение совершило бяку и будет закрыто...
Приклеили запись стектрейсов и минидампов на нашу C++ прогу. И удивились — ибо стектрейс выдавал lite трейс с либами,
которые тока в дотнете существуют. Хммм.. Значит не вы виноваты, но! проблема, что стектрейс не полный (нет
интерфейса функций — мы видим тока библиотеки CLR времени исполнения дотнета), дамп тоже ничего не показывает
нормального — видимо не может он записать/показать инфу по managed коду, когда мы его вызываем из С++'ного.

Вопрос — КАК правильно написать ловлю исключительных ситуаций под дотнет код — не имея доступа к этому коду,
который содержится в юзаемой нами дотнет библиотеке. У нас тока доступ к managed коду создания COM объекта,
и к С++ коду прокси либы. Мы хотим чтоб при возникновении каких либо фиговых ситуаций в нутрях дотнета — мы
получали полноценный стектрейс, характерный именно для managed кода (со всеми верными функциями) и чтоб писался
такой дамп, который при открытии мог показать именно внутренности дотнет среды исполнения — со всеми локальными
переменными с переменными в куче и т.д. Для С++ у нас это вышло — но походу для того, чтоб это сработало для
дотнет либы надо чтото особенное проделать....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.