Столкнулся с очень необычной проблемой. Причем что интересно, происходит она только в одном случае, когда происходит отладка юнит тестов (если запустить этот код ВНЕ цикла отладки юнит теста, то все в порядке - все работает как ожидается).
У меня есть следующий c++/cli код:
MngdClass^ create_mngd_obj()
{
try
{
native_class.build_object();
return gcnew MngdClass(native_class.get_object());
}
catch (const NativeException& e)
{
int i = 0;
}
}
вот нативный код, который выбрасывает исключение (стоит обратить внимание, что он находится в отдельной нативной c++ библиотеке):
struct NativeException
{
const std::string message;
NativeException(const std::string& message_) : message(message_)
{
}
};
void NativeClass()
{
throw NativeException("O la la");
}
Так вот, если попытаться продебажить этот код в юнит тестах, произойдет зацикливание. А именно, будет выполняться такая последовательность с выбросами исключений (сам не понимаю, почему раскрутки стэка не происходит):
native_class.build_object();
native_class.get_object();
Если же код отлаживать не в юнит тестах, все происходит нормально. Выбрасывается исключение которое благополучно отлавливается обработчиком
Возможно кому-нибудь поможет. В настройках проекта для unit test'ов выставил enable native code debugging
и allow unsafe code
. Пока не понимаю, как это смогло помочь, буду разбираться
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Может кто-нибудь дать техническое объяснение, почему нельзя инициализировать статические переменные внутри класса, а в функциях можно?