Креш .Нет проги без Exception
Это когда просто вываливается, плюя на все ухищрения.
Причем конечно, по набору неизвестных условий, случайным образом, на компе заказчика. "Переключить" на свой комп. или произвести "имитацию" рабочей обстановки на своём компе практически нереально.
Кто то уже сталкивался с подобным?
хоть в какой системе и оболочке это происходит? Я наблюдал например:
1. на плиске, кристалл у заказчика слегка перегрелся от того, что он в жаркий день гулял и тайминги слетели,
2. на обычном процессоре под линуксом - одновременно работали программы, которые сильно забивали ресурсы, а баг был в мултитреде, причем у меня он ни разу не возник,
3. под виндой, не помню почему, но часто со стороны наблюдал такое...
хоть в какой системе
Для .Net - винда.
Обычно всегда Exception ловился. А тут нифига, Лог обрывается и усё.
Вот нашел пока ссылки, надо попробовать
https://www.microsoft.com/en-us/download/details.aspx?id=2...
http://blog.functionalfun.net/2013/05/how-to-debug-silent-...
Кто то уже сталкивался с подобным?
----
Да.
Если нет вообще ничего - т.е. вываливается ДО первой показанной формы, то:
- отсутствие дллки в нужном формате наиболее вероятно.
- отсутствие каких-либо предустановленных тоолсов.
- несовместимость по процессору интел/амд.
- какие-нибудь хитрые аллокации в начале запуска.
- дллки грузятся не туда.
- в начале кода програмки есть пара вызовов на инициализацию - там что-то системозависимое.г
Разок было смешно. Первую форму - показывает, дальше - валится.
Как выяснилось - попала дебужная версия либ - там переменные в либах должны были инициализироваться определенным образом, а не инициализировались и релевантная струтрура на диске не создавалась и не проверялась. В результате фаулт не качился.
Общий трай-катч у тебя там есть? Проскакивает мимо него ?
Есть виндовый дамп по факту смерти проги?
Если первое, то, помнится, некоторые из эксептионов не базируются на Систем.Эхцептион.
Их было не много. И были они в до .Нетовские времена. Но, по моему, так и остались т.к. завязано на ошибки в сопроцессорной математике.
Где и как ловятся и обрабатываются - не смотрел, не требовалось.
Ну а дамп у тебя по второй ссылке описан. Включать и сидеть и ждать.
Общий трай-катч у тебя там есть?
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += UnhandledExceptionHandler;
currentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
DispatcherUnhandledException += MainApp_DispatcherUnhandledException;
FirstChanceException - это пожалуй будет лишним, поставил чисто для пробы
Посмотрите в Computerverwaltung -> Windows Protokolle, может там задокументировано, почему программа отвалилась.
Попробуйте покрыть try- блоками критические места.
У вас unsafe code в программе есть? Или какие-нибудь свои нативные Dll в программе используете?
Скорее всего это исключение проброшенное из unmanaged кода. Какой-нибудь boostexception или просто throw "you can't be here"; / throw 42; :)
Ну и в самом .Net есть пара исключений, которые не ловятся catch'ем, например StackOverflowException (https://stackoverflow.com/questions/7392783/list-of-except...).
Попробуйте покрыть try- блоками критические места.
Для данного случая абсолютно бессмысленная затея. Exception ловится и глобально без проблем
Код - нативный С шарп. Что происходит - бум ждать.
Кому надо смотрим это
https://blogs.msdn.microsoft.com/chaun/2013/11/12/steps-to...
А WER-репорт у меня получить не получилось.
WER-репорт работает не на всех машинах. На моей так пока не получилось, у клиента нет проблем, хотя 10-ка и там и там.
DebugDiag работает везде, но требует прав админа.
Зато при загрузке дампа на машину с проектом открылся исходник с точным местом вылета. Правда вылет был "Exception"
тебя тупо обманули
https://docs.microsoft.com/en-us/windows/desktop/wer/what-...
https://www.microsoftpressstore.com/articles/article.aspx?...
Кстати, забыл еще про EventViewer, там нужно просто поискать имя своего ехе.
Оказалось обычное OutOfMemory, никакой дамр не поможет. Правда обычное наблюдение ничего не дало, память крутится около 200К
Я честным образом пытался выполнить рекомендации которые мелкомягкие приводят по ссылке в Студии. Там имено WEP-отчет.
Не получилось.
Тогда начал пинать мелкомягких. От них получил то что получил.
обычное OutOfMemory
------
"Вот что значит не проверять результат вызова malloc/callloc на null"
Если у меня случается какой-то непонятный крэш в .НЕТе, то первое средство - Fusion
Это или что другое?
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-1.1/e74a18c4(v=vs.71)
The Assembly Binding Log Viewer displays details for failed assembly binds. This information helps you diagnose why the .NET Framework cannot locate an assembly at run time.
Это стандартная утилита для Винды? А то есть проблемка - на компах нет "админа", да и установить что сторонее не просто.
Это или что другое?
Оно.
Это стандартная утилита для Винды?
Да. Включается через реестр.
А то есть проблемка - на компах нет "админа", да и установить что сторонее не просто.
Понадобятся админские права для реестра, устанавливать ничего не надо, надо только включить (https://stackoverflow.com/questions/255669/how-to-enable-a...).