«Синий экран смерти» коды ошибок. Как искать и исправлять ошибки в коде Коды ошибок пк синий экран

Обновление Anniversary операционной системы Windows 10 добавило в нее множество утилит и дополнительных программ, которые могут потребоваться пользователю. В том числе компания Microsoft ввела новое диагностическое приложение, которое позволяет определить причину возникновения «Синего экрана» - хорошо известной ошибки, которая приводит к перезагрузке компьютера. Если синий экран возникает часто, пользователю важно узнать, почему это происходит, после чего принять шаги для устранения проблемы.

Как узнать причину синего экрана (BSOD) в Windows 10

До обновления Anniversary на Windows 10 узнать причину возникновения синего экрана можно было только в системных файлах компьютера. Компания Microsoft стремится сократить количество взаимодействий между пользователем и системными данными PC, выпуская различные утилиты и диагностические приложения для определения синего экрана.

Чтобы узнать причину синего экрана в Windows 10 после Anniversary обновления нужно сделать следующее:



Важно помнить, что не всегда синий экран возникает при работе Windows из-за программной ошибки. Он может появляться из-за проблем с «железом» (перегрев или повреждения компонентов компьютера) или вирусами. Когда ошибка будет определена диагностической утилитой Windows, можно узнать подробности о ней на сайте Microsoft по коду ошибки BugCheck.

Почему нужно диагностировать причину синего экрана

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

Если синий экран появляется регулярно, нужно обязательно определить причину возникновения ошибки и устранить ее.

С каждым годом количество электроники в автомобилях становится все больше и больше. С одной стороны и безопасней. Но, к сожалению, из-за огромного количества электронных технологий в случае неисправности современного автомобиля без специального электронного оборудования не обойтись. Ведь только благодаря специальным сканерам мы можем узнать код ошибки, с помощью которого можно узнать истинную причину неисправности. Например, с помощью кодов ошибок мы сможет узнать причину появления на приборной панели значка "Чек двигателя ". Предлагаем вам основные диагностические коды неисправности автомобиля, которые дадут вам представление о том, как интерпретировать самые распространенные коды ошибок, связанные с появлением "Чека двигателя" на приборной панели.

Обычно если на приборной панели появляется "Чек двигателя " (подробнее об этом вы можете прочитать в нашей статье ) многие владельцы автомобилей отправляются в технический автоцентр, для того чтобы с помощью специалистов и компьютерной диагностики узнать причину появления электронной ошибки работы двигателя. Но также немало водителей, которые после появления "Чек двигателя" на приборной панели пытаются установить причину ошибки самостоятельно с помощью сканера подключаемого в диагностический порт OBD 2 / OBD II автомобиля, которые к счастью в наше время стоят не очень дорого.

Напомним, что все имеют специальный электронный блок управления двигателем (ECM), который не только управляет электронных впрыском, но и выполняет ряд других важных работ для нормальной и эффективной работы силового агрегата. Также электронный компьютер (ECM) хранит в своей памяти все коды ошибок, возникающие в порядке работы двигателя. Благодаря этим кодам мы можем узнать причину неисправности в нашей машине. Дело в том, что диагностические коды неисправностей в автопромышленности . То есть, по сути, принят мировой стандарт. Именно поэтому код ошибки одной марки автомобиля, как правило, означает то же самое, что и код ошибки другой марки автомобиля.

И так мы собрали для вас самые часто встречаемые коды неисправностей современных автомобилей, с помощью которых вы сможете узнать, из-за чего на приборной панели высветился значок . То есть, вы сможете установить причину неисправности, и естественно это поможет вам не гадать на кофейной гуще, меняя методом «тыка» новые запчасти, датчики и компоненты, а также сразу установить какой компонент вышел из строя. Это вам сэкономит не только время во время диагностики автомобиля, но и сэкономит ваши деньги и даже нервы.

P0100 - Ошибка массового расхода воздуха


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

Изменение напряжения или частоты всегда пропорционально количеству поступаемого воздуха. Сигнал датчика расхода воздуха, как мы уже сказали, контролируется компьютером автомобиля (ЕСМ).

Блок управления двигателем (ЕСМ) использует данные, поступаемые с датчика массового расхода воздуха (ДМРВ), чтобы знать нагрузку на двигатель и рассчитать необходимое количество топлива, впрыскиваемого в двигатель.

Если же сигнал от ДМРВ, поступающий в компьютер автомобиля будет вне ожидаемого значения (диапазона), то блок управления двигателем обнаруживает неисправность и выдает код ошибки P0100, записывая его в свою постоянную память.

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

Обратите внимание, что автомобили с кодом ошибки P0100 могут иметь некоторые проблемы: отсутствие мощности при разгоне, вибрации двигателя, помпаж при работе силового агрегата и т.п.

В некоторых автомобилях появления в системе кода P0100 может привести к включению аварийного режима работы двигателя, при котором скорость оборотов мотора будет ограничена 2500-3000 об/мин.

Если помимо кода P0100 в системе есть и другие ошибки, то они также должны быть интерпретированы в первую очередь.

Причина ошибки P0100:

Неисправный или загрязненный датчик массового расхода воздуха

Обрыв или короткое замыкание в датчике массового расхода воздуха в электрической цепи

Обрыв или короткое замыкание в датчике или цепи заземления

Другие электрические проблемы с проводкой датчика MAF / ДМРВ, (ржавые провода, загнутые клеммы, плохое заземление, предохранитель сгорел, и т.д.)

Утечки вакуума

Ограниченный поток воздуха после или перед воздушным фильтром

Датчик расхода воздуха неправильно установлен

Проблема с блоком управления двигателя (ECM)

Примеры: В некоторых автомобилях Nissan (например, Nissan Maxima, Frontier, Sentra, Pathfinder, а также Infiniti Q30, QX4) код ошибки P0100 появляется, как правило, из-за выхода из строя датчика массового расхода воздуха или из-за разбитой пайки на контактах датчика.


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

В качестве решения проблемы с загрязнением датчика компания Nissan рекомендует чаще чистить корпус воздушного фильтра, который также нужно менять чаще, устанавливать только оригинальные воздушные фильтра Nissan.

Что должно быть проверено при появлении ошибки P0100:

  • 1. Двигатель должен быть проверен на наличие утечек вакуума.
  • 2. Разъем и проводка между датчиком массового расхода воздуха и блоком управления двигателем (ECM) должны быть проверены на обрыв или повреждения.
  • 3. Воздуховод между датчиком массового расхода воздуха и воздухозаборником двигателя должен быть проверен на наличие трещин, разрывов, наличие разъединенных зажимов или на неправильное соединение.
  • 4. Необходимо проверить разъем и проводку датчика ДМРВ на надежность соединения клемм, на наличие коррозии и повреждения.
  • 5. . Если он загрязнен его необходимо заменить.
  • 6. Проверить напряжение и заземление датчика на разъеме.
  • 7. Масса датчика должна быть проверена с помощью вольтметра или с помощью сканера на разных оборотах двигателя. Затем нужно сравнить полученные данные с эталонными данными, которые ранее были получены с полностью исправного датчика.

В большинстве случаев при возникновении ошибки P0100 и при отсутствии других проблем, необходимо просто заменить датчик на новый. После замены датчика в некоторых автомобилях нужно сбросить адаптированные значения показаний датчика в блоке управления двигателем.

Датчик массового расхода воздуха может стоить от 1500 до 30000 рублей в зависимости от марки и модели автомобиля.

Замена датчика расхода воздуха не представляет собой какую-либо сложность. Простота замены естественно влияет на стоимость замены датчика в техническом центре. Так замена датчика в автосервисе обойдется вам не дорого.

Помните, что в случае замены ДМРВ на новый предпочтительнее приобретать оригинальный датчик, поскольку установка неоригинального датчика может вызвать проблемы с работой двигателя.

Заменив датчик на новый, в большинстве автомобилей ошибка P0100 автоматически исчезнет из системы спустя короткое время.

P0106 - Ошибка датчика абсолютного давления / Датчика барометрического давления


В зависимости от марки и модели автомобиля каждое современное транспортное средство оснащено датчиком абсолютного давления (MAP) или датчиком барометрического давления (BARO).

Датчик абсолютного давления (MAP) измеряет абсолютное давление внутри впускного коллектора двигателя, который непосредственно связан с нагрузкой на двигатель. В случае неисправности датчика (MAP) чаще всего пропадает мощность и тяга двигателя. Также могут наблюдаться проблемы при работе двигателя на холостом ходу. Например, обороты на холостом ходу могут быть слишком высокими, чем установлено производителем, либо слишком низкими.

Датчик барометрического давления (BARO) измеряет атмосферное давление, которое постоянно изменяется в зависимости от скорости автомобиля и нагрузки двигателя.

Компьютер автомобиля использует данные, поступаемые с датчиков (MAP) и (BARO), для регулировки количества топлива впрыскиваемого в .

В некоторых автомобилях компьютер также может использовать датчик абсолютного давления (МАР) чтобы проверить работу системы рециркуляции отработанных газов.

Причина ошибки P0106:

Засор в результате повреждения вакуумной линии, которая подходит к датчику

Электрические проблемы с проводкой. Проблемы с разумом или блоком питанием блока управления двигателем (компьютер ЕСМ)

Неисправность датчиков MAP / BARO

Грязный корпус дроссельной заслонки

Проблемы с системой рециркуляции отработавших газов

Плохой датчик массового расхода воздуха (MAF)

Механические проблемы с двигателем

P0130 - Ошибка датчика кислорода


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

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

Обычно проблемы связаны с неисправностью самого датчика или проблем с проводкой передающую информацию с датчика в компьютер.

P0340 - Ошибка датчика положения распределительного вала


Датчик положения распределительного вала (CMP) посылает в компьютер двигателя информацию о положении распредвала. Это необходимо для управления зажиганием, для впрыска топлива и для контроля за изменяемыми фазами газораспределения.

Диагностический код неисправности P0340 появляется в компьютере тогда, когда он не может обнаружить сигнал поступаемый от датчика положения распредвала.

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

P0341 - Несоответствие данных датчика положения распределительного вала с датчиком коленвала


Вращение распределительного вала двигателя синхронизировано с вращением коленвала. Блок управления двигателем постоянно получает сигнал с датчика положения коленчатого вала, который сравнивает информацию с датчика распредвала.

Код ошибки P0341 означает, что сигнал датчика распредвала находится вне ожидаемого диапазона или же его вращение не соответствует вращению коленвала.

Причина ошибки P0341:

Неисправность датчика положения распредвала

Неправильно установлен датчик распредвала

Повреждение датчика скорости

Наличие инородных материалов между датчиком положения распределительного вала и датчиком скорости

Обрыв, плохое соединение разъёма датчика распредвала

Ремень ГРМ или цепь сдвинулась на один зуб (или звено)

Растянулся ремень ГРМ или цепь

Проблемы с механизмом синхронизации

Электрические помехи от вторичных компонентов системы зажигания (высокое сопротивление в высоковольтных проводах, неисправность свечей зажигания и т.п.)

P0401 - Недостаточность рециркуляции выхлопных газов (EGR)


Основная задача системы рециркуляции выхлопных газов это уменьшение количества окислов азота (NOx) в выхлопных газах автомобиля. Окислы азота образуются при очень высоких температурах. Система рециркуляции отработавших газов направляет небольшую часть выхлопных газов обратно во впускной коллектор, где она разбавляют кислород и топливную смесь, таким образом, снижая температуру сгорания топлива.

Поток выхлопных газов, которые направляются обратно во впускной коллектор, управляется с помощью клапана рециркуляции отработавших газов. В случае неисправности клапана в системе появляется ошибка P0401.

P0402 - Переизбыток рециркуляции выхлопных газов


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

Также эта система снижает содержание оксидов азота в выхлопных газах, которые образуются из-за высокой температуры горения.

Система рециркуляции отработавших газов соединяет выпускной коллектор с впускным коллектором с помощью труб и шлангов, а также оснащена клапаном, который регулирует движение потоков отработанных газов. Например, когда двигатель холодный, работает на холостом ходу или при большой нагрузки, клапан рециркуляции отработавших газов должен быть закрыт.

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

P0403 - Ошибка управления клапаном рециркуляции выхлопных газов


Блок управления двигателем управляет потоком рециркуляции отработавших газов путем открытия и закрытия клапана рециркуляции отработавших газов. Некоторые автомобили имеют вакуумный EGR клапан. Другие же автомашины оснащены электрическим управляемым клапаном рециркуляции выхлопных газов (на фото).

В случае обнаружения проблем в электрической цепи управления клапаном рециркуляции отработавших газов, то в системе появляется ошибка P0403.

Появление ошибки может быть связано с отсутствием питания клапана или же в связи износом самого клапана.

P0410 - Ошибка системы подачи вторичного воздуха


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

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

P0420 - Ошибка катализатора выхлопной системы (недостаточная эффективность)


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

Компьютер машины во время работы двигателя постоянно сравнивает сигналы с обоих датчиков. Если катализатор больше не выполняет эффективной свою работу, компьютер записывает в память системы ошибки P0420 (для кислородного датчика №1) и P0430 (для кислородного датчика №2).

На самом деле причин, по которым появилась ошибка P0420 может быть множество. Но в большинстве случаев появление этого кода неисправности говорит о явной проблеме самого катализатора. Как правило, в этом случае необходима замена каталитического нейтрализатора.

К сожалению, катализатор любого автомобиля является дорогостоящим компонентом.

P0505 - Ошибка управления холостым ходом


Код P0505 означает, что компьютер автомобиля не может регулировать холостой ход двигателя должным образом. Обычно при появлении этой ошибки автомобиля начинает работать со сбоями. Например начинают прыгать обороты двигателя, или же двигатель глохнет на холостом ходу. Также могут наблюдаться либо слишком маленькие холостые обороты двигателя, либо очень большие.

Ошибка P0505 может появиться по многим причинам, начиная от утечки вакуума мимо дроссельной заслонки, засорения воздушных каналов и заканчивая загрязнением воздушного клапана, а также грязным корпусом дроссельной заслонки. Также в случае появления данной ошибки могут быть проблемы с проводкой или разъемами питающую систему холостого хода.

Как работает в автомобиле система холостого хода?

В современных автомобилях блок управления двигателем постоянно регулирует количество оборотов двигателя на холостом ходу в зависимости от условий. Это сделано с помощью увеличения или уменьшения потоков воздуха, которые проходят в обход дроссельной заслонки двигателя. Вы можете наглядно увидеть, как работает система холостого хода во время прогрева холодного двигателя, когда система для быстрого прогрева силового агрегата добавляет обороты двигателя и затем по мере прогревания мотора постепенно снижает его обороты.

В некоторых автомобилях, также используется контрольный воздушный клапан (IAC) или соленоид (на фото), которые контролируют поток воздуха .

В этой системе для регулировки холостых оборотов двигателя используется клапан, который управляется блоком управления двигателем. В зависимости от условий, компьютер слегка открывает или закрывает клапан управления воздушными потоками (IAC).

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

Искать ошибки в программах - непростая задача. Здесь нет никаких готовых методик или рецептов успеха. Можно даже сказать, что это - искусство. Тем не менее есть общие советы, которые помогут вам при поиске. В статье описаны основные шаги, которые стоит предпринять, если ваша программа работает некорректно.

Шаг 1: Занесите ошибку в трекер

После выполнения всех описанных ниже шагов может так случиться, что вы будете рвать на себе волосы от безысходности, все еще сидя на работе, когда поймете, что:

  1. Вы забыли какую-то важную деталь об ошибке, например, в чем она заключалась.
  2. Вы могли делегировать ее кому-то более опытному.

Трекер поможет вам не потерять нить размышлений и о текущей проблеме, и о той, которую вы временно отложили. А если вы работаете в команде, это поможет делегировать исправление коллеге и держать все обсуждение в одном месте.

Вы должны записать в трекер следующую информацию:

  1. Что делал пользователь.
  2. Что он ожидал увидеть.
  3. Что случилось на самом деле.

Это должно подсказать, как воспроизвести ошибку. Если вы не сможете воспроизвести ее в любое время, ваши шансы исправить ошибку стремятся к нулю.

Шаг 2: Поищите сообщение об ошибке в сети

Если у вас есть сообщение об ошибке, то вам повезло. Или оно будет достаточно информативным, чтобы вы поняли, где и в чем заключается ошибка, или у вас будет готовый запрос для поиска в сети. Не повезло? Тогда переходите к следующему шагу.

Шаг 3: Найдите строку, в которой проявляется ошибка

Если ошибка вызывает падение программы, попробуйте запустить её в IDE под отладчиком и посмотрите, на какой строчке кода она остановится. Совершенно необязательно, что ошибка будет именно в этой строке (см. следующий шаг), но, по крайней мере, это может дать вам информацию о природе бага.

Шаг 4: Найдите точную строку, в которой появилась ошибка

Как только вы найдете строку, в которой проявляется ошибка, вы можете пройти назад по коду, чтобы найти, где она содержится. Иногда это может быть одна и та же строка. Но чаще всего вы обнаружите, что строка, на которой упала программа, ни при чем, а причина ошибки - в неправильных данных, которые появились ранее.

Если вы отслеживаете выполнение программы в отладчике, то вы можете пройтись назад по стектрейсу, чтобы найти ошибку. Если вы находитесь внутри функции, вызванной внутри другой функции, вызванной внутри другой функции, то стектрейс покажет список функций до самой точки входа в программу (функции main()). Если ошибка случилась где-то в подключаемой библиотеке, предположите, что ошибка все-таки в вашей программе - это случается гораздо чаще. Найдите по стектрейсу, откуда в вашем коде вызывается библиотечная функция, и продолжайте искать.

Шаг 5: Выясните природу ошибки

Ошибки могут проявлять себя по-разному, но большинство из них можно отнести к той или иной категории. Вот наиболее частые.

  1. Ошибка на единицу
    Вы начали цикл for с единицы вместо нуля или наоборот. Или, например, подумали, что метод.count() или.length() вернул индекс последнего элемента. Проверьте документацию к языку, чтобы убедиться, что нумерация массивов начинается с нуля или с единицы. Эта ошибка иногда проявляется в виде исключения Index out of range .
  2. Состояние гонки
    Ваш процесс или поток пытается использовать результат выполнения дочернего до того, как тот завершил свою работу. Ищите использование sleep() в коде. Возможно, на мощной машине дочерний поток выполняется за миллисекунду, а на менее производительной системе происходят задержки. Используйте правильные способы синхронизации многопоточного кода: мьютексы, семафоры, события и т. д.
  3. Неправильные настройки или константы
    Проверьте ваши конфигурационные файлы и константы. Я однажды потратил ужасные 16 часов, пытаясь понять, почему корзина на сайте с покупками виснет на стадии отправки заказа. Причина оказалась в неправильном значении в /etc/hosts , которое не позволяло приложению найти ip-адрес почтового сервера, что вызывало бесконечный цикл в попытке отправить счет заказчику.
  4. Неожиданный null
    Бьюсь об заклад, вы не раз получали ошибку с неинициализированной переменной. Убедитесь, что вы проверяете ссылки на null , особенно при обращении к свойствам по цепочке. Также проверьте случаи, когда возвращаемое из базы данных значение NULL представлено особым типом.
  5. Некорректные входные данные
    Вы проверяете вводимые данные? Вы точно не пытаетесь провести арифметические операции с введенными пользователем строками?
  6. Присваивание вместо сравнения
    Убедитесь, что вы не написали = вместо == , особенно в C-подобных языках.
  7. Ошибка округления
    Это случается, когда вы используете целое вместо Decimal , или float для денежных сумм, или слишком короткое целое (например, пытаетесь записать число большее, чем 2147483647, в 32-битное целое). Кроме того, может случиться так, что ошибка округления проявляется не сразу, а накапливается со временем (т. н. Эффект бабочки).
  8. Переполнение буфера и выход за пределы массива
    Проблема номер один в компьютерной безопасности. Вы выделяете память меньшего объема, чем записываемые туда данные. Или пытаетесь обратиться к элементу за пределами массива.
  9. Программисты не умеют считать
    Вы используете некорректную формулу. Проверьте, что вы не используете целочисленное деление вместо взятия остатка, или знаете, как перевести рациональную дробь в десятичную и т. д.
  10. Конкатенация строки и числа
    Вы ожидаете конкатенации двух строк, но одно из значений - число, и компилятор пытается произвести арифметические вычисления. Попробуйте явно приводить каждое значение к строке.
  11. 33 символа в varchar(32)
    Проверяйте данные, передаваемые в INSERT , на совпадение типов. Некоторые БД выбрасывают исключения (как и должны делать), некоторые просто обрезают строку (как MySQL). Недавно я столкнулся с такой ошибкой: программист забыл убрать кавычки из строки перед вставкой в базу данных, и длина строки превысила допустимую как раз на два символа. На поиск бага ушло много времени, потому что заметить две маленькие кавычки было сложно.
  12. Некорректное состояние
    Вы пытаетесь выполнить запрос при закрытом соединении или пытаетесь вставить запись в таблицу прежде, чем обновили таблицы, от которых она зависит.
  13. Особенности вашей системы, которых нет у пользователя
    Например: в тестовой БД между ID заказа и адресом отношение 1:1, и вы программировали, исходя из этого предположения. Но в работе выясняется, что заказы могут отправляться на один и тот же адрес, и, таким образом, у вас отношение 1:многим.

Если ваша ошибка не похожа на описанные выше, или вы не можете найти строку, в которой она появилась, переходите к следующему шагу.

Шаг 6: Метод исключения

Если вы не можете найти строку с ошибкой, попробуйте или отключать (комментировать) блоки кода до тех пор, пока ошибка не пропадет, или, используя фреймворк для юнит-тестов, изолируйте отдельные методы и вызывайте их с теми же параметрами, что и в реальном коде.

Попробуйте отключать компоненты системы один за другим, пока не найдете минимальную конфигурацию, которая будет работать. Затем подключайте их обратно по одному, пока ошибка не вернется. Таким образом вы вернетесь на шаг 3.

Шаг 7: Логгируйте все подряд и анализируйте журнал

Пройдитесь по каждому модулю или компоненту и добавьте больше сообщений. Начинайте постепенно, по одному модулю. Анализируйте лог до тех пор, пока не проявится неисправность. Если этого не случилось, добавьте еще сообщений.

Ваша задача состоит в том, чтобы вернуться к шагу 3, обнаружив, где проявляется ошибка. Также это именно тот случай, когда стоит использовать сторонние библиотеки для более тщательного логгирования.

Шаг 8: Исключите влияние железа или платформы

Замените оперативную память, жесткие диски, поменяйте сервер или рабочую станцию. Установите обновления, удалите обновления. Если ошибка пропадет, то причиной было железо, ОС или среда. Вы можете по желанию попробовать этот шаг раньше, так как неполадки в железе часто маскируют ошибки в ПО.

Если ваша программа работает по сети, проверьте свитч, замените кабель или запустите программу в другой сети.

Ради интереса, переключите кабель питания в другую розетку или к другому ИБП. Безумно? Почему бы не попробовать?

Если у вас возникает одна и та же ошибка вне зависимости от среды, то она в вашем коде.

Шаг 9: Обратите внимание на совпадения

  1. Ошибка появляется всегда в одно и то же время? Проверьте задачи, выполняющиеся по расписанию.
  2. Ошибка всегда проявляется вместе с чем-то еще, насколько абсурдной ни была бы эта связь? Обращайте внимание на каждую деталь. На каждую. Например, проявляется ли ошибка, когда включен кондиционер? Возможно, из-за этого падает напряжение в сети, что вызывает странные эффекты в железе.
  3. Есть ли что-то общее у пользователей программы, даже не связанное с ПО? Например, географическое положение (так был найден легендарный баг с письмом за 500 миль).
  4. Ошибка проявляется, когда другой процесс забирает достаточно большое количество памяти или ресурсов процессора? (Я однажды нашел в этом причину раздражающей проблемы «no trusted connection» с SQL-сервером).

Шаг 10: Обратитесь в техподдержку

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

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

  1. Позовите кого-нибудь еще.
    Попросите коллегу поискать ошибку вместе с вами. Возможно, он заметит что-то, что вы упустили. Это можно сделать на любом этапе.
  2. Внимательно просмотрите код.
    Я часто нахожу ошибку, просто спокойно просматривая код с начала и прокручивая его в голове.
  3. Рассмотрите случаи, когда код работает, и сравните их с неработающими.
    Недавно я обнаружил ошибку, заключавшуюся в том, что когда вводимые данные в XML-формате содержали строку xsi:type="xs:string" , все ломалось, но если этой строки не было, все работало корректно. Оказалось, что дополнительный атрибут ломал механизм десериализации.
  4. Идите спать.
    Не бойтесь идти домой до того, как исправите ошибку. Ваши способности обратно пропорциональны вашей усталости. Вы просто потратите время и измотаете себя.
  5. Сделайте творческий перерыв.
    Творческий перерыв - это когда вы отвлекаетесь от задачи и переключаете внимание на другие вещи. Вы, возможно, замечали, что лучшие идеи приходят в голову в душе или по пути домой. Смена контекста иногда помогает. Сходите пообедать, посмотрите фильм, полистайте интернет или займитесь другой проблемой.
  6. Закройте глаза на некоторые симптомы и сообщения и попробуйте сначала.
    Некоторые баги могут влиять друг на друга. Драйвер для dial-up соединения в Windows 95 мог сообщать, что канал занят, при том что вы могли отчетливо слышать звук соединяющегося модема. Если вам приходится держать в голове слишком много симптомов, попробуйте сконцентрироваться только на одном. Исправьте или найдите его причину и переходите к следующему.
  7. Поиграйте в доктора Хауса (только без Викодина).
    Соберите всех коллег, ходите по кабинету с тростью, пишите симптомы на доске и бросайте язвительные комментарии. Раз это работает в сериалах, почему бы не попробовать?

Что вам точно не поможет

  1. Паника
    Не надо сразу палить из пушки по воробьям. Некоторые менеджеры начинают паниковать и сразу откатываться, перезагружать сервера и т. п. в надежде, что что-нибудь из этого исправит проблему. Это никогда не работает. Кроме того, это создает еще больше хаоса и увеличивает время, необходимое для поиска ошибки. Делайте только один шаг за раз. Изучите результат. Обдумайте его, а затем переходите к следующей гипотезе.
  2. «Хелп, плиииз!»
    Когда вы обращаетесь на форум за советом, вы как минимум должны уже выполнить шаг 3. Никто не захочет или не сможет вам помочь, если вы не предоставите подробное описание проблемы, включая информацию об ОС, железе и участок проблемного кода. Создавайте тему только тогда, когда можете все подробно описать, и придумайте информативное название для нее.
  3. Переход на личности
    Если вы думаете, что в ошибке виноват кто-то другой, постарайтесь по крайней мере говорить с ним вежливо. Оскорбления, крики и паника не помогут человеку решить проблему. Даже если у вас в команде не в почете демократия, крики и применение грубой силы не заставят исправления магическим образом появиться.

Ошибка, которую я недавно исправил

Это была загадочная проблема с дублирующимися именами генерируемых файлов. Дальнейшая проверка показала, что у файлов различное содержание. Это было странно, поскольку имена файлов включали дату и время создания в формате yyMMddhhmmss . Шаг 9, совпадения : первый файл был создан в полпятого утра, дубликат генерировался в полпятого вечера того же дня. Совпадение? Нет, поскольку hh в

Синий экран смерти (англ. Blue Screen of Death, Blue Screen of Doom, BSoD )- сообщения о критической системной ошибке в операционных системах Microsoft Windows. Многие кто сталкиваются на своем компьютере/ ноутбуке с синим экраном смерти, единственным решением видят переустановку операционной системы. Но иногда ОС здесь вовсе не причем, а проблема в "железе". Для того что бы не гадать- почему появился синий экран смерти, нужно использовать информацию, которую предоставляет сама операционная система в виде логов. В этой статье я пошагово опишу как выяснить причину появления синего экрана смерти.

Итак, появление синего экрана смерти всегда неожиданно и не вовремя, поэтому успеть увидеть что написано многие просто не успевают, а там надо сказать написано (правда не в совсем явном виде) причины сбоя. Первым делом я предлагаю настроить компьютер/ ноутбук, что бы он не перезагружался сразу после сбоя системы, а дал возможность увидеть причину сбоя, если этой информации будет недостаточно необходимо посмотреть dump файл в котором содержится информация: код ошибки с параметрами, список драйверов загруженных в оперативную память на момент краха системы и т.д., но этих сведений достаточно, для определения сбойного драйвера.

Настройки касаемые перезагрузки после сбоя системы можно указать, если нажать правой кнопкой мыши на ярлыке Мой компьютер/ Компьютер (подходит для Windows XP, Windows7, Windows8), выбрать "Свойства ", или нажать сочетание клавиш + . Все принтскирны ниже будут касаться Windows7, аналогичным способ настраивается на Windows XP, Windows8, Windows8.1.

На вкладке "Дополнительно " выберите в поле Загрузка и восстановление "Параметры ".

Убираете галочку "Выполнить автоматическую перезагрузку ", для того что бы успеть увидеть все что пишет синий экран смерти. В строке Файл дампа указан путь, где будет сохраняться файл, в котором будут указаны причины сбоя.

Теперь вы можете внимательно изучить информацию при появлении синего экрана смерти. Если компьютер у вас уже не загружается, и изменить данные настройки вы не можете, в этом случае при загрузке нажимаете на клавиатуре F8 и выбираете пункт меню «При отказе системы не выполнять перезагрузку».

Если указанной там информации мало, можно воспользоваться дампом (dmp файл ). Для этого можно использовать инструмент microsoft- microsoft debugging tool, но он много весит, требует установки и наличия framework 4.5. Можно обойтись меньшими жертвами, если использовать программу BlueScreenView . На мой взгляд очень удобная программа не требующая установки и на русском языке (файл добавить в папку с программой). Запустив файл BlueScreenView.exe вам откроется интерфейс программы в котором уже будет загружен dump этого компьютера (используется путь по умолчанию C:\Windows\MiniDump, если зайти в Настройки- Дополнительные параметры можно указать другой путь, если вы скопировали dump в другое место).