Какой рейтинг вас больше интересует?
|
Главная / Главные темы / Тэг «исключение»
Исключение Волгограда из числа городов-организаторов ЧМ-2018 даже не обсуждается. Виталий Мутко 2014-07-17 12:23:50
... . Как сказал министр, исключение Волгограда из числа ...
+ развернуть текст сохранённая копия
При любых обстоятельствах Волгоград останется в числе городов, которые примут матчи Чемпионата мира по футболу 2018 года. С таким заявлением перед журналистами выступил министр спорта Виталий Мутко. Как сказал министр, исключение Волгограда из числа городов-организаторов даже не обсуждается. Только в страшном сне можно представить, что в ЧМ-2018 не будет задействован город с такой культурой и […]
Тэги: 2018, волгоград, города, городов, исключение, мира, футболу, чемпионата
Исключение из газовой горизонтали 2014-06-05 16:29:42
Москва и ЕС смогут разрешить энергетический конфликт, отодвинув Киев от денег и переговоров ...
+ развернуть текст сохранённая копия
Москва и ЕС смогут разрешить энергетический конфликт, отодвинув Киев от денег и переговоров Завершился очередной раунд переговоров по газовой проблеме в Берлине между Россией, Украиной и Евросоюзом, однако он во всем оставил чувство незавершенности. Так, «Газпром» не получил всей суммы задолженности. Поставив товаров на 5,2 миллиарда долларов, он получил лишь 786 миллионов. Украина так и […]
Тэги: газовой, горизонтали, исключение, общество
Гранж Джон Оркестра. Эксплоужен 2013-10-24 19:31:20
... . Но иногда бывают исключения. Я сразу к ...
+ развернуть текст сохранённая копия
Я испытываю желание и потребность покупать вещи, сделанные русскими дизайнерами и произведенные в России. К сожалению, практически все, что делают русские дизайнеры и что производится в России - говно. Но иногда бывают исключения. Я сразу к ним проникаюсь любовью. В прошлом году перед поездкой в Антарктиду я искал пуховик потеплее, и выбор мой однозначно пал на парку компании "Баск", а "Канадский гусь" пошел лесом. И когда у меня есть выбор между "Сиверой" и "Колумбией", я однозначно возьму "Сиверу". Это не из-за патриотизма, а просто мне так приятнее, спасибо, что спросили. Это такое же естественное чувство, как и то, что с русской девушкой приятнее общаться, чем с английской. Общение на родном языке нельзя заменить ничем. Так вот. Сегодня уже намылился в магазин "Фотт", где продается то, что мне обычно нравится, чтобы купить для Питерской экспедиции куртку. Но не дошел, потому что совершенно случайно был прямо в центре обнаружен охуеннейший магазин марки "Гранж Джон Оркестра. Эксплоужен". Так и называется. Достаточно длинно, чтобы уже было интересно. Но самое интересное внутри. Чуваки находят всякие клевые высокотехнологичные и нестандартные ткани, а потом все шьют в Москве. При этом все невероятного качества, фантазии и красоты. Рубашки только не в моем вкусе - все клетчатые как у программистов. Работают в магазине отличные бородатые парни. Все покупатели там тоже были с бородами. Купил суперскую парку и квадратные джинсы из конопли. Вообще, сложно поверить, что весь проект - московский. Уровень совершенно мировой. Респект и уважуха: https://www.facebook.com/GRUNGEJOHN. Я теперь поклонник марки. P. S. Если кому-то придет в голову мысль, что это реклама - разумеется, это реклама. Я шел, увидел магазин, охуел от качества, написал пост, чтобы людям было приятно, и чтобы все ломанулись туда хотя бы посмотреть. Если кто-то думает, что эта реклама проплачена, то я предлагаю тому человеку надеть на голову кастрюлю с борщом, вставить в уши огурцы, и засунуть в жопу килограмм гречки - выглядеть это будет так же по-мудацки, как и мысль о том, что этот пост проплачен.
Тэги: бренд, гранж, исключение, магазин, москва, одежда, охуенно
Обработка и логирование исключений под Windows и в веб сервисах (часть 11) 2013-08-19 16:43:00
... %2fexception1.jpg" alt=" исключения" />
... James Dingle про исключения.
Первый пост ...
+ развернуть текст сохранённая копия
Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения.
Первый пост посвященный этой статье находится здесь.
9. Сохраняйте дампы
Функция Win32 API MiniDumpWriteDump() позволяет вам сохранить дамп и продолжить выполнение приложения.
Это очень удобный шаблон для улучшения разрешения проблем, в дополнение к логам.
Это очевидно довольно дорогой процесс.
Так что использовать его нужно, довольно редко.
Но обычно результаты оказываются очень ценными.
Здесь написано как сделать это на Си:
http://blogs.msdn.com/b/joshpoley/archive/2008/05/19/prolific-usage-of-minidumpwritedump-automating-crash-dump-analysis-part-0.aspx
.
Дальше будет пример на C#.
Вы также можете найти много примеров в интернете.
Как только дамп сгенерирован и сохранен.
Вы просто открываете его в Visual Studio.
И имеете доступные исходные коды (возможно имелось ввиду, что для разбора они нужны).
Важно чтобы вы вызывали этот метод внутри вашего блока catch.
Сделав так вы получите исключение встроенное (сохраненное) в дампе.
И указатель текущей инструкции будет установлен на строке с ошибкой.
А не на строке, в которой дамп был создан.
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
namespace Sample
{
/// /// Creates a mini dump of the current process ///
internal static class MiniDump
{
public static void CreateDump(string path, MiniDumpType miniDumpType)
{
var exceptionInfo = new MiniDumpExceptionInfo
{
ThreadId = GetCurrentThreadId(),
ExceptionPointers = Marshal.GetExceptionPointers(),
ClientPointers = false // false because own process
};
Process process = Process.GetCurrentProcess();
using (var stream = new FileStream(path, FileMode.Create))
{
Debug.Assert(stream.SafeFileHandle != null);
// The problem Marshal.GetExceptionPointers can return null on x86 machines due to differences
// in low-level exception handling.
// Then passing a MiniDumpExceptionInfo structure with a NULL ExceptionPointers members causes an
// access violation. So we only pass this structure if we got a valid ExceptionPointers member.
// It will probably result that x86 machines will see the instruction pointer to the MiniDumpWriteDump
// line and not the exception itself.
IntPtr exceptionInfoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(exceptionInfo));
Marshal.StructureToPtr(exceptionInfo, exceptionInfoPtr, false);
try
{
MiniDumpWriteDump(
process.Handle,
process.Id,
stream.SafeFileHandle.DangerousGetHandle(),
miniDumpType,
exceptionInfo.ExceptionPointers == IntPtr.Zero ? IntPtr.Zero : exceptionInfoPtr,
IntPtr.Zero,
IntPtr.Zero);
}
catch (Exception exception)
{
Trace("Cannot generate the mini-dump because of exception " + exception);
}
Marshal.FreeHGlobal(exceptionInfoPtr);
}
}
[DllImport("kernel32.dll")]
private static extern int GetCurrentThreadId();
[DllImport("DbgHelp.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
private static extern Boolean MiniDumpWriteDump(
IntPtr hProcess,
Int32 processId,
IntPtr fileHandle,
MiniDumpType dumpType,
IntPtr excepInfo,
IntPtr userInfo,
IntPtr extInfo);
[StructLayout(LayoutKind.Sequential, Pack = 4)]
private struct MiniDumpExceptionInfo
{
public Int32 ThreadId;
public IntPtr ExceptionPointers;
[MarshalAs(UnmanagedType.Bool)]
public bool ClientPointers;
}
}
[Flags]
internal enum MiniDumpType
{
Normal = 0x00000000,
WithDataSegs = 0x00000001,
WithFullMemory = 0x00000002,
WithHandleData = 0x00000004,
FilterMemory = 0x00000008,
ScanMemory = 0x00000010,
WithUnloadedModules = 0x00000020,
WithIndirectlyReferencedMemory = 0x00000040,
FilterModulePaths = 0x00000080,
WithProcessThreadData = 0x00000100,
WithPrivateReadWriteMemory = 0x00000200,
WithoutOptionalData = 0x00000400,
WithFullMemoryInfo = 0x00000800,
WithThreadInfo = 0x00001000,
WithCodeSegs = 0x00002000,
WithoutAuxiliaryState = 0x00004000,
WithFullAuxiliaryState = 0x00008000
}
}
Все, на этом статья заканчивается.
Тэги: (решение), ide, исключение, использование, сделать
Обработка и логирование исключений под Windows и в веб сервисах (часть 10) 2013-08-08 22:04:00
... 2fexception1.jpg" alt=" исключения" />
исключений ",
некоторые ...
+ развернуть текст сохранённая копия
Продолжаю цикл переводов понравившейся мне статьи автора James Dingle про исключения.
Первый пост посвященный этой статье находится здесь.
8. Обрушивайтесь правильно
В соответствии с правилом " 5 - Не проглатывать исключений ",
некоторые разработчики предполагают, что их приложение должно быть всегда работающим.
Таким образом они думают, что лучше пусть приложение поймает все исключения и останется на плаву.
Они оценивают такое поведение как образец надежности приложения.
И действительно, это звучит противоречащим интуиции, что обрушивание приложения может повысить его надежность.
Такой образ мысли зависит от ситуации, но самое главное он не полный (то есть он не учитывает всего).
Что в данном случае действительно важно, так это как просто и безболезненно расследовать падение приложения.
Выбор продолжать ли выполнение или остановить приложение является менее приоритетной задачей.
Возможны ситуации, когда лучше не продолжать выполнение приложения и обрушиться. На это есть следующие причины:
-
Приложение находится в состоянии, когда дальнейшее выполнение может повредить данные или внутреннюю логику.
В данном случае лучше выполнить "очищающий крах", чем продолжить "грязное выполнение".
Крах позволит рестартовать приложению с хорошо известной точки (из правильного состояния).
-
Времена, когда крах обозначался невразумительным message box ("Access memory violation at 0x00054357") с бесполезным дампом стека, уже прошли.
Это тот случай когда вы не можете подключить отладчик к приложению.
Потому что вы поставили ваше приложение пользователю (клиенту), или потому что вы не имеете доступа к продакшн окружению.
Надежда на лишь то, что дампы стека просты в использовании и высоко ценны в наше время.
-
Если ваше приложение это служба Windows под Windows 2008, то не пойманное исключение будет логировано как Windows Event вместе с дампом стека.
И мини дампы будут созданы автоматически вместе с Windows Error Reporting.
Вы можете сконфигурировать вашу службу Windows рестартовать автоматически.
-
.Net предлагает API Environment.FailFastwhich, который также генерирует дамп стека и лог исключений.
-
Получение большего числа ошибок во время фаз разработки и тестирования увеличивает основное качество приложения.
Если ошибки всегда ловятся, или что еще хуже тихо игнорируются.
То они могут остаться неизвестными или попасть вниз списка "известных предупреждений", которые никому не хватит времени расследовать.
Если проблемы сохранены в отчет и их просто чинить, то в конце вы получите приложение более высокого качества, без изменений навыков команды разработчиков.
Если ошибки игнорируются или требуют мучительных расследований.
То только высокоприоритетные проблемы будут решены и продукт будет поставлен с большим количеством ошибок.
-
В больших и/или распределенных продакшн окружениях проблемное звено будет обнаружено быстрее, если приложение обрушится.
Все за и против, а также возможные преимущества и недостатки зависят от процессов и команды в вашей компании.
Однако:
-
Подумайте об деградации (усечении функционала) перед падением.
Падение должно быть последним решением, реакцией на событие, которое ваше приложение несомненно не сможет обработать.
Если некоторая возможность не жизненно необходима для вашего приложения, то это не хорошо, если она приведет к падению всего приложения.
Однако, это должно быть проконтролированно в логике кода.
"Продолжение при любых ошибках" не приемлимый путь для реализации режима усеченного функионала.
Потому что поведение приложения не предсказуемо.
-
"Конфигурационный файл нечитаем", "база данных не существует", "диск переполнен"
могут быть валидными сценариями для того, чтобы опрокинуть ваше приложение с копыт.
Но ваше приложение может также продолжить работу с настройками производителя по умолчанию, создав недостающую БД, или продолжая работать в режиме read-only.
Все на самом деле зависит от требований и функциональности вашего приложения.
-
Крах может быть концом экземпляра вашего приложения.
Но он же может не быть концом жизненного цикла.
Бизнес должен понимать ущерб от проблемы.
Команда поддержки должна понимать как она может обойти проблему.
А команда разработки должна иметь возможность пофиксить ее.
Это должно быть частью архитектуры обработки ошибок приложением.
Windows Error Reporting это прекрасная возможность (функционал) предоставленный нам в Windows 2008.
По умолчанию, Windows Error Reporting пытается загрузить информацию о крахе в Microsoft и удалить ее когдв все будет кончено.
Вы можете настроить ключами реестра эту подсистему так, чтобы она сохраняла дамп краха на диск во всех случаях вашего собственного исследования.
Подробнее прочитать как это сделать можно здесь.
Продолжение следует ...
Тэги: (решение), исключение, сделать
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Главная / Главные темы / Тэг «исключение»
|
Взлеты Топ 5
Падения Топ 5
|