Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Unhandled exception


Автор: lightforever 10.5.2011, 11:58
Использую Microsoft visual studio 2008. Сейчас столкнулся со следущей проблемой:

1) Я компилирую приложение в Debug режиме

2) Происходит unhandled exception при работе моего приложения( не сразу, через мин 20), без указания
причины ошибки, просто написано, что unhandled exception в Имя_моего_проекта.vsln и больше ничего

3) *.pdb файл в папке с exe присутствует.

4) Никакого указания на строку, где произошла ошибка нет( если не считать ассемблер-строку)

Помогите разобраться пожалуйста

Автор: lightforever 10.5.2011, 14:34
Это ошибка win32. Я юзаю в своём проекте win32 функции, поэтому скорее всего дело в том, что это неуправляемый код. Что делать в таком случае?

Автор: jonie 10.5.2011, 16:05
у вас .NET4 ? Тогда будьте вкурсе что ошибки типа AccessViolation более не ловятся в нём даже catch{} конструкцией.
Для того чтобы включить режим совместимости с .NET 3.5 надо в app.config прописать:
Код

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>
но вообще это нерекомендуемо (подробнее об настройке: http://www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx)

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

А для того чтобы понять в чем конкретно ошибка надо взять winDBG, запуститься с SOS.DLL и юзать нечто вроде !VerifyHeap -v совместно с !ListNearObj наверно...

Автор: lightforever 10.5.2011, 17:40
jonie , нет у меня 3.5. 

А насчёт: "надо взять winDBG, запуститься с SOS.DLL и юзать нечто вроде !VerifyHeap -v совместно с !ListNearObj". Интересно. Надо попробовать поразбираться

Автор: lightforever 10.5.2011, 21:03
А неподскажите какие ошибки не ловятся в try , catch в Netframework 3.5? Ато не найду

Автор: jonie 10.5.2011, 21:33
lightforever, не ошибки, а языковые исключения cath-ем ловятся только.... другой вопрос что CLR 3.5 преобразует AccessViolation (это native исключения, они, кстати, не ловятся и в Сях например) в языковые...
Но, некоторые эта штука не словит. В частности ошибки компиляции байткода кода, например: MethodNotFoundException (тоже ошибка компиляции) или вообще косячный код.

Насчет Native ошибок  фих его знает.. можно, наверно, глянуть в сорцы CLR на этот счет (но они не все открыты) ...

и еще: то что у вас 3.5 вовсе не значит что программа работает под CLR 3.5 .. запустите clrver -all чтобы узнать что реально используется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)