Как узнать причину ошибки приложения

Содержание

  1. Как открыть диспетчер ошибок windows 10
  2. Подготовка к просмотру журнала ошибок
  3. Перед просмотром журнала ошибок
  4. Смотрим журнал ошибок и подробности ошибки
  5. Просмотр «Журнала ошибок» в Windows 10
  6. «Журнал ошибок» в Виндовс 10
  7. Включение логирования
  8. Запуск «Просмотра событий»
  9. Анализ журнала ошибок
  10. Журнал событий в Windows: как его открыть и найти информацию об ошибке
  11. Работа с журналом событий (для начинающих)
  12. Как посмотреть журнал ошибок в Windows 10 и понять, как его использовать?
  13. Журнал ошибок в Виндовс 10 что значит?
  14. Включаем логирование
  15. Запускаем приложение «Просмотр событий»
  16. Анализируем журнал ошибок
  17. Критические события
  18. Ошибки
  19. Предупреждение
  20. Сведения
  21. Вертим логи как хотим ― анализ журналов в системах Windows
  22. Как зайти в журнал событий в Windows 10
  23. Где находится журнал событий Windows
  24. Нюансы работы в журнале
  25. Что такое Журнал событий и для чего он нужен
  26. Как очистить журнал событий в Windows 10
  27. Вручную
  28. Через командную консоль
  29. Через PowerShell
  30. Вертим логи как хотим ― анализ журналов в системах Windows
  31. Свойства событий
  32. Как открыть
  33. Другой способ
  34. Как использовать просмотр событий Windows для решения проблем с компьютером
  35. Дополнительно на тему администрирования Windows
  36. Как запустить программу Просмотра событий
  37. Получить дополнительную информацию о событиях

Как открыть диспетчер ошибок windows 10

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

Статья будет построена на примере windows 10, но данная функция доступна и в более ранних версиях windows.

Работа в ранних версиях ничем не отличается, за исключением не существенных отличий в виде оформления и мелких нюансов интерфейса.

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

Подготовка к просмотру журнала ошибок

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

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

log windows 1

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

log windows 2

Перед просмотром журнала ошибок

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

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

Смотрим журнал ошибок и подробности ошибки

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

log windows 3

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

log windows 4

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

Главное не торопиться, все проанализировать и используя наш могучий «инструмент» Интернет, принять правильное решение.

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

Источник

Просмотр «Журнала ошибок» в Windows 10

ZHurnal oshibok v Windows 10

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

«Журнал ошибок» в Виндовс 10

Упомянутый ранее журнал является лишь небольшой частью системной утилиты «Просмотр событий», которая по умолчанию присутствует в каждой версии Windows 10. Далее мы разберем три важных аспекта, которые касаются «Журнала ошибок» — включение логирования, запуск средства «Просмотр событий» и анализ системных сообщений.

Включение логирования

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

Zapusk Dispetchera zadach cherez panel zadach v Windows 10

Zapusk utilityi Sluzhbyi cherez Dispetcher zadach v Windows 10

Proverka sostoyaniya sluzhbyi ZHurnal sobyitiy Windows

Izmenenie parametrov sluzhbyi ZHurnal sobyitiy Windows

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

Preduprezhdenie pri deaktivatsii fayla podkachki v Windows 10

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

С включением логирования разобрались. Теперь двигаемся дальше.

Запуск «Просмотра событий»

Как мы уже упоминали ранее, «Журнал ошибок» входит в состав стандартной оснастки «Просмотр событий». Запустить ее очень просто. Делается это следующим образом:

Zapusk utilityi Prosmotr sobyitiy cherez komandnuyu stroku v Windows 10

В результате на экране появится главное окно упомянутой утилиты. Обратите внимание, что существуют и другие методы, которые позволяют запустить «Просмотр событий». О них мы в деталях рассказывали ранее в отдельной статье.

Анализ журнала ошибок

После того как «Просмотр событий» будет запущен, вы увидите на экране следующее окно.

Obshhiy vid utilityi Prosmotr sobyitiy pri zapuske v OS Windows 10

В левой его части находится древовидная система с разделами. Нас интересует вкладка «Журналы Windows». Нажмите на ее названии один раз ЛКМ. В результате вы увидите список вложенных подразделов и общую статистику в центральной части окна.

Otkryitie razdela ZHurnalyi Windows v utilite Prosmotr sobyitiy v Windows 10

Для дальнейшего анализа необходимо зайти в подраздел «Система». В нем находится большой список событий, которые ранее происходили на компьютере. Всего можно выделить четыре типа событий: критическое, ошибка, предупреждение и сведения. Мы вкратце расскажем вам о каждом из них. Обратите внимание, что описать все возможные ошибки мы не можем просто физически. Их много и все они зависят от различных факторов. Поэтому если у вас не получится что-то решить самостоятельно, можете описать проблему в комментариях.

Критическое событие

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

Primer kriticheskoy oshibki v zhurnale sobyitiy v Windows 10

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

Для более продвинутого пользователя есть специальная вкладка «Подробности», где все событие представлены с кодами ошибок и последовательно расписаны.

Ошибка

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

Primer standartnoy oshibki v ZHurnale sobyitiy v OS Windows 10

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

Предупреждение

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

Primer preduprezhdeniya v zhurnale sobyitiy v OS Windows 10

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

Сведения

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

Primer soobshheniy so svedeniyami v zhurnale sobyitiy v OS Windows 10

Подобная информация будет очень кстати для тех пользователей, которые не хотят устанавливать сторонний софт для просмотра последних действий Windows 10.

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

Помимо этой статьи, на сайте еще 12375 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Журнал событий в Windows: как его открыть и найти информацию об ошибке

Prosmotr zhurnalov sobyitiyДоброго дня!

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

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

Работа с журналом событий (для начинающих)

Как его открыть

Этот вариант универсальный и работает во всех современных версиях ОС Windows.

eventvwr komanda dlya vyizova zhurnala sobyitiy

eventvwr — команда для вызова журнала событий

Prosmotr sobyitiy

Sistema i bezopasnost

Система и безопасность

Administrirovanie

Prosmotr sobyitiy Administrirovanie

Просмотр событий — Администрирование

Актуально для пользователей Windows 10/11.

1) Нажать по значку с «лупой» на панели задач, в поисковую строку написать «событий» и в результатах поиска ОС Windows предоставит вам ссылку на журнал (см. скрин ниже). 👇

Windows 10 sobyitiya

Windows 10 — события

2) Еще один способ: нажать сочетание Win+X — появится меню со ссылками на основные инструменты, среди которых будет и журнал событий.

WinX vyizov menyu

Журналы Windows

ZHurnalyi Windows

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

В нем есть 5 вкладок, из которых 3 основных: «Приложение», «Безопасность», «Система». Именно о них пару слов подробнее:

Как найти и просмотреть ошибки (в т.ч. критические)

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

Sistema filtr tekushhego zhurnala

Система — фильтр текущего журнала / Кликабельно

После указать дату, уровень события (например, ошибки), и нажать OK.

Kriticheskie oshibki

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

Например, на своем подопытном компьютере я нашел ошибку из-за которой он перезагрузился (благодаря коду ошибки и ее подробному описанию — можно найти решение на сайте Microsoft).

Predstavlenyi vse oishbki po date i vremeni ih vozniknoveniya

Представлены все ошибки по дате и времени их возникновения / Кликабельно

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

Можно ли отключить журналы событий

Можно! Только нужно ли? (хотя не могу не отметить, что многие считают, что на этом можно сэкономить толику дискового пространства, плюс система более отзывчива и меньше нагрузка на жесткий диск)

Для отключения журналов событий нужно:

Otkryivaem sluzhbyi services.msc universalnyiy sposob

Sluzhbyi zhurnalyi sobyitiy

Службы — журналы событий

Источник

Как посмотреть журнал ошибок в Windows 10 и понять, как его использовать?

Как посмотреть журнал ошибок в Windows 10? Когда мы включаем ОС или любое другое ПО, то с определённой периодичностью появляются ошибки. При этом довольно важно иметь представление об анализе и методах устранения данной ошибки, чтобы эта проблема не возникла вновь. В Виндовс 10 с это целью было создано приложение «Журнал ошибок». Давайте разберём её подробнее.

Журнал ошибок в Виндовс 10 что значит?

Kak posmotret zhurnal oshibok

Данный журнал – это часть системного приложения «Просмотр событий». Он внедрен в каждую версию Виндовс 10. Давайте рассмотрим 3 аспекта, довольно важных и касающихся данного журнала – включаем логирование, запускаем средство «Просмотра событий» и анализируем системные данные.

Включаем логирование

Вначале нужно включить логирование, чтобы ОС имела возможность для записи разнообразных событий в журнал. Чтобы это сделать:

Запускаем приложение «Просмотр событий»

Как уже упоминалось выше, «Журнал ошибок» является частью приложения «Просмотр событий». Давайте это приложение запустим:

Кликнем по клавишам Win+R, затем в появившемся окошке введём сочетание eventvwr.msc и кликнем по кнопочке ОК. Как следствие, у нас запустилась нужная утилита.
6 eventvwr msc

Анализируем журнал ошибок

Итак, как только мы запустили это приложение, на дисплее появляется следующее окошко:

7 prosmotr sobytiy

Слева помещён каталог папочек и их разделы. Нам интересен каталог «Журналы Windows». Кликнем по нему ЛКМ. Мы увидим его подразделы и на середине окна нам покажется общая статистика.

8 zhurnaly vindovs obschee

Чтобы более подробно провести анализ, нам нужно войти в подкаталог «Система». Вы увидите перечень событий, происходивших на ПК. Их 4 вида: критические, ошибка, предупреждение и сведения. Давайте коротко рассмотрим каждую из них. Про каждую из возможных ошибок рассказать не возможно, так как их большое количество, и они произошли по различным факторам.

Критические события

9 kriticheskiy

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

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

Если вас заинтересовал данный момент, можно перейти в меню «Подробности» и узнать о происшедшем более подробно, рассмотрев коды сбоев и прочее.

Ошибки

10 oshibka

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

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

Предупреждение

11 preduprezhdenie

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

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

Сведения

12 svedeniya

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

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

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

Вывод: как посмотреть журнал ошибок в Windows 10 мы разобрались и провели его краткий анализ. Как видите, в этом деле глубокие познания ПК не нужны. Совет: хотя бы раз в неделю его просматривать на предмет повторяющихся, и, самое главное, «Критических» ошибок. Вообще, «Критические» ошибки должны на вашем компьютере отсутствовать. Если они есть, то это уже сигнал, что в системе что-то не в порядке. Поэтому, стоит об этом подумать. Успехов!

Источник

Вертим логи как хотим ― анализ журналов в системах Windows

Многие пользователи ПК даже не догадываются о наличии на их устройстве очень полезного дополнения. Оно фиксирует все события, происходящие в ОС. А ведь считывание и запись данных происходит даже в период отсутствия активности со стороны человека. Журнал событий в Windows 10 предоставляет пользователю возможность ознакомиться с ошибками, предупреждениями и прочей немаловажной информацией.

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

Как зайти в журнал событий в Windows 10

Запуск утилиты осуществляется несколькими способами. Первый подразумевает использование окна «Выполнить». Для этого необходимо:

lazy placeholder

А второй требует использования панели управления, где требуется:

lazy placeholder

Попав в журнал событий в Windows 10, можно приступить к разбору его интерфейса.

В левой колонке расположены журналы событий. Они уже отсортированы по разделам. Что облегчает работу пользователя. Наибольший интерес представляет раздел «Журналы Windows», состоящий из категорий:

По центру утилиты расположено два окна. Первое отображает произошедшие события. А второе подробную информацию о каждом из них. Правая же колонка содержит рабочие инструменты журнала.

lazy placeholder

lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder

Где находится журнал событий Windows

Физически Журнал событий представляет собой набор файлов в формате EVTX, хранящихся в системной папке %SystemRoot%/System32/Winevt/Logs.

lazy placeholder

Хотя эти файлы содержат текстовые данные, открыть их Блокнотом или другим текстовым редактором не получится, поскольку они имеют бинарный формат. Тогда как посмотреть Журнал событий в Windows 7/10, спросите вы? Очень просто, для этого в системе предусмотрена специальная штатная утилита eventvwr.

lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder

Нюансы работы в журнале

Число обозреваемых событий может исчисляться тысячами и даже десятками тысяч. Для создания комфортных условий работы журнал событий в Windows 10 оснащен встроенным фильтром. Он позволяет отсортировать имеющуюся информацию по:

lazy placeholder

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

Регистрация сервера DCOM не выполнена за отведенное время ожидания

Поиск описания потребует выхода в интернет и посещения сайта Microsoft. Или иных ресурсов, предоставляющих подобную информацию.

Стоит упомянуть, что наличие ошибок – нормальное явление ОС. Любые, даже самые незначительные сбои вносятся в реестр. Так что не стоит переживать, обнаружив их в журнале.

Что такое Журнал событий и для чего он нужен

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

Как очистить журнал событий в Windows 10

Среди способов, как почистить журнал событий в Windows 10, можно выделить 5 основных.

Вручную

Этот способ весьма прост. Он не требует специальных навыков или дополнительного софта. Все что необходимо, это:

lazy placeholder

Как вы, наверное, заметили, это самый простой способ. Однако некоторые ситуации требуют прибегнуть к иным методам.

Этот способ также позволяет быстро провести очистку. Для его реализации вам потребуется код:

@echo off FOR /F «tokens=1,2*» %%V IN (‘bcdedit’) DO SET adminTest=%%V IF (%adminTest%)==(Access) goto theEnd for /F «tokens=*» %%G in (‘wevtutil.exe el’) DO (call :do_clear «%%G») goto theEnd :do_clear echo clearing %1 wevtutil.exe cl %1 goto :eof :theEnd

Его необходимо использовать в следующем алгоритме:

После этого все отчеты будут удалены.

Через командную консоль

Очистить журнал событий в Windows 10 можно и при помощи данного инструмента. Для этого потребуется:

for /F “tokens=*” %1 in (‘wevtutil.exe el’) DO wevtutil.exe cl “%1″

lazy placeholder

Через PowerShell

PowerShell – более продвинутая версия командной строки. Очистка журнала с его помощью проводится аналогичным образом. За исключением вводимой команды. В данном случае она имеет следующий вид:

wevtutil el | Foreach-Object

lazy placeholder

lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder

Вертим логи как хотим ― анализ журналов в системах Windows

lazy placeholder

Пора поговорить про удобную работу с логами, тем более что в Windows есть масса неочевидных инструментов для этого. Например, Log Parser, который порой просто незаменим.

В статье не будет про серьезные вещи вроде Splunk и ELK (Elasticsearch + Logstash + Kibana). Сфокусируемся на простом и бесплатном.

До появления PowerShell можно было использовать такие утилиты cmd как find и findstr. Они вполне подходят для простой автоматизации. Например, когда мне понадобилось отлавливать ошибки в обмене 1С 7.7 я использовал в скриптах обмена простую команду:

findstr «Fail» *.log >> fail.txt

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

Основным инструментом для работы с текстовыми журналами является командлет Get-Content, предназначенный для отображения содержимого текстового файла. Например, для вывода журнала сервиса WSUS в консоль можно использовать команду:

Для вывода последних строк журнала существует параметр Tail, который в паре с параметром Wait позволит смотреть за журналом в режиме онлайн. Посмотрим, как идет обновление системы командой:

lazy placeholder
Смотрим за ходом обновления Windows.

Если же нам нужно отловить в журналах определенные события, то поможет командлет Select-String, который позволяет отобразить только строки, подходящие под маску поиска. Посмотрим на последние блокировки Windows Firewall:

lazy placeholder
Смотрим, кто пытается пролезть на наш дедик.

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

Оба полезных командлета можно объединить. Например, для вывода строк с 45 по 75 из netlogon.log поможет команда:

Для получения списка доступных системных журналов можно выполнить следующую команду:

lazy placeholder
Вывод доступных журналов и информации о них.

Для просмотра какого-то конкретного журнала нужно лишь добавить его имя. Для примера получим последние 20 записей из журнала System командой:

lazy placeholder
Последние записи в журнале System.

Для получения определенных событий удобнее всего использовать хэш-таблицы. Подробнее о работе с хэш-таблицами в PowerShell можно прочитать в материале Technet about_Hash_Tables.

Для примера получим все события из журнала System с кодом события 1 и 6013.

В случае если надо получить события определенного типа ― предупреждения или ошибки, ― нужно использовать фильтр по важности (Level). Возможны следующие значения:

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

lazy placeholder
Ошибки и предупреждения журнала System.

Аналогичным образом можно собирать таблицу, фильтруя непосредственно по тексту события и по времени.

Подробнее почитать про работу обоих командлетов для работы с системными журналами можно в документации PowerShell:

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

Утилита Log Parser появилась на свет в начале «нулевых» и с тех пор успела обзавестись официальной графической оболочкой. Тем не менее актуальности своей она не потеряла и до сих пор остается для меня одним из самых любимых инструментов для анализа логов. Загрузить утилиту можно в Центре Загрузок Microsoft, графический интерфейс к ней ― в галерее Technet. О графическом интерфейсе чуть позже, начнем с самой утилиты.

О возможностях Log Parser уже рассказывалось в материале «LogParser — привычный взгляд на непривычные вещи», поэтому я начну с конкретных примеров.

Для начала разберемся с текстовыми файлами ― например, получим список подключений по RDP, заблокированных нашим фаерволом. Для получения такой информации вполне подойдет следующий SQL-запрос:

SELECT extract_token(text, 0, ‘ ‘) as date, extract_token(text, 1, ‘ ‘) as time, extract_token(text, 2, ‘ ‘) as action, extract_token(text, 4, ‘ ‘) as src-ip, extract_token(text, 7, ‘ ‘) as port FROM ‘C:WindowsSystem32LogFilesFirewallpfirewall.log’ WHERE action=’DROP’ AND port=’3389′ ORDER BY date,time DESC

Посмотрим на результат:

lazy placeholder
Смотрим журнал Windows Firewall.

Разумеется, с полученной таблицей можно делать все что угодно ― сортировать, группировать. Насколько хватит фантазии и знания SQL.

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

Работать будем с журналом TerminalServices-LocalSessionManagerOperational.

Не со всеми журналами Log Parser работает просто так ― к некоторым он не может получить доступ. В нашем случае просто скопируем журнал из %SystemRoot%System32WinevtLogsMicrosoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx в %temp%test.evtx.

Данные будем получать таким запросом:

SELECT timegenerated as Date, extract_token(strings, 0, ‘|’) as user, extract_token(strings, 2, ‘|’) as sourceip FROM ‘%temp%test.evtx’ WHERE EventID = 21 ORDER BY Date DESC

lazy placeholder
Смотрим, кто и когда подключался к нашему серверу терминалов.

Особенно удобно использовать Log Parser для работы с большим количеством файлов журналов ― например, в IIS или Exchange. Благодаря возможностям SQL можно получать самую разную аналитическую информацию, вплоть до статистики версий IOS и Android, которые подключаются к вашему серверу.

В качестве примера посмотрим статистику количества писем по дням таким запросом:

SELECT TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,’T’), ‘yyyy-MM-dd’)) AS Date, COUNT(*) AS FROM ‘C:Program FilesMicrosoftExchange ServerV15TransportRolesLogsMessageTracking*.LOG’ WHERE (event-id=’RECEIVE’) GROUP BY Date ORDER BY Date ASC

Если в системе установлены Office Web Components, загрузить которые можно в Центре загрузки Microsoft, то на выходе можно получить красивую диаграмму.

lazy placeholder
Выполняем запрос и открываем получившуюся картинку…

lazy placeholder
Любуемся результатом.

Следует отметить, что после установки Log Parser в системе регистрируется COM-компонент MSUtil.LogQuery. Он позволяет делать запросы к движку утилиты не только через вызов LogParser.exe, но и при помощи любого другого привычного языка. В качестве примера приведу простой скрипт PowerShell, который выведет 20 наиболее объемных файлов на диске С.

Ознакомиться с документацией о работе компонента можно в материале Log Parser COM API Overview на портале SystemManager.ru.

Благодаря этой возможности для облегчения работы существует несколько утилит, представляющих из себя графическую оболочку для Log Parser. Платные рассматривать не буду, а вот бесплатную Log Parser Studio покажу.

lazy placeholder
Интерфейс Log Parser Studio.

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

Вторая особенность ― возможность экспорта запроса в скрипт PowerShell.

В качестве примера посмотрим, как будет работать выборка ящиков, отправляющих больше всего писем:

lazy placeholder
Выборка наиболее активных ящиков.

При этом можно выбрать куда больше типов журналов. Например, в «чистом» Log Parser существуют ограничения по типам входных данных, и отдельного типа для Exchange нет ― нужно самостоятельно вводить описания полей и пропуск заголовков. В Log Parser Studio нужные форматы уже готовы к использованию.

Помимо Log Parser, с логами можно работать и при помощи возможностей MS Excel, которые упоминались в материале «Excel вместо PowerShell». Но максимального удобства можно достичь, подготавливая первичный материал при помощи Log Parser с последующей обработкой его через Power Query в Excel.

Приходилось ли вам использовать какие-либо инструменты для перелопачивания логов? Поделитесь в комментариях.

Свойства событий

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

lazy placeholder

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

lazy placeholder

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

Как открыть

Для запуска нажмите «Win+R», пропишите «control». Далее:

lazy placeholder

Другой способ

Нажмите (Win+R), пропишите «eventvwr.msc».

lazy placeholder
Откроется окно утилиты. Слева расположены журналы:

Средняя колонка отображает события. Правая — действия. Ниже — сведения о выбранной записи.

lazy placeholder
Работа происходит с разделом «Журналы», в который входят такие категории:

Событий в системе исчисляется десятками тысяч. Поэтому утилита для удобства предоставляет поиск по времени, коду источнику. Например, как увидеть системные ошибки? Нажмите по ссылке «Фильтр».

lazy placeholder
Отметьте пункты как на скриншоте:

lazy placeholder
Утилита отфильтрует записи.

lazy placeholder
Просмотрите сообщение:

lazy placeholder

Как использовать просмотр событий Windows для решения проблем с компьютером

05.06.2014 windows | для начинающих
Тема этой статьи — использование малознакомого большинству пользователей инструмента Windows: Просмотр событий или Event Viewer.

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

Дополнительно на тему администрирования Windows

Как запустить программу Просмотра событий

lazy placeholder

Чтобы осуществить запуск программы Просмотр событий нужно:

Также данная программа открывается через папку Администрирование в меню Пуск.

Важно знать, что все события распределены по категориям – к примеру, в категории Приложения размещены события приложений, в категории Система находятся системные новости. Если же на ПК настроен анализ событий безопасности (аудит событий входа в систему), то сообщения аудита поступают в категорию Безопасность.

Получить дополнительную информацию о событиях

Если вы хотите получить дополнительную информацию, предоставляемую средством просмотра событий Windows, вы можете посетить сайт EventID.net. EventID.net предоставляет базу данных, содержащую тысячи событий с соответствующими комментариями или статьями, предоставленными инженерами сайта, а также внешними сотрудниками.

Поиск может быть выполнен путём ввода идентификатора события, источника или одного или нескольких ключевых слов.

Источник

Обновлено 23.03.2022

Как посмотреть логи windows

Всем привет, тема стать как посмотреть логи windows. Что такое логи думаю знают все, но если вдруг вы новичок, то логи это системные события происходящие в операционной системе как Windows так и Linux, которые помогают отследить, что, где и когда происходило и кто это сделал. Любой системный администратор обязан уметь читать логи windows.

Примером из жизни может служить ситуация когда на одном из серверов IBM, выходил из строя диск и для технической поддержки я собирал логи сервера, для того чтобы они могли диагностировать проблему. За собирание и фиксирование логов в Windows отвечает служба Просмотр событий. Просмотр событий это удобная оснастка для получения логов системы.

Как открыть в просмотр событий

Зайти в оснастку Просмотр событий можно очень просто, подойдет для любой версии Windows. Нажимаете волшебные кнопки

Win+R и вводите eventvwr.msc

Откроется у вас окно просмотр событий windows в котором вам нужно развернуть пункт Журналы Windows. Пробежимся по каждому из журналов.

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

логи windows-01

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

логи windows-02

Пункт Установка, в него записывает Windows логи о том что и когда устанавливалось Например программы или обновления.

логи windows-03

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

логи windows-04

Так же есть логи windows для более специфических служб, например DHCP или DNS. Просмотр событий сечет все :).

логи windows-05

Фильтрация в просмотре событий

Предположим у вас в журнале Безопасность более миллиона событий, наверняка вы сразу зададите вопрос есть ли фильтрация, так как просматривать все из них это мазохизм. В просмотре событий это предусмотрели, логи windows можно удобно отсеять оставив только нужное. Справа в области Действия есть кнопка Фильтр текущего журнала.

Фильтрация в просмотре событий

Вас попросят указать уровень событий:

  • Критическое
  • Ошибка
  • Предупреждение
  • Сведения
  • Подробности

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

Фильтрация в просмотре событий-2

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

  • Как очистить просмотр событий с помощью PowerShell
  • Как почистить все журналы windows с помощью скрипта

Посмотреть логи windows PowerShell

Было бы странно если бы PowerShell не умел этого делать, для отображения log файлов открываем PowerShell и вводим вот такую команду

Get-EventLog -Logname ‘System’

В итоге вы получите список логов журнала Система

список логов журнала Система

Тоже самое можно делать и для других журналов например Приложения

Get-EventLog -Logname ‘Application’

список логов журнала Приложения

небольшой список абревиатур

  • Код события — EventID
  • Компьютер — MachineName
  • Порядковый номер события — Data, Index
  • Категория задач — Category
  • Код категории — CategoryNumber
  • Уровень — EntryType
  • Сообщение события — Message
  • Источник — Source
  • Дата генерации события — ReplacementString, InstanceID, TimeGenerated
  • Дата записи события — TimeWritten
  • Пользователь — UserName
  • Сайт — Site
  • Подразделение — Conteiner

Например, для того чтобы в командной оболочке вывести события только со столбцами «Уровень», «Дата записи события», «Источник», «Код события», «Категория» и «Сообщение события» для журнала «Система», выполним команду:

Get-EventLog –LogName ‘System’ | Format-Table EntryType, TimeWritten, Source, EventID, Category, Message

вывести события

Если нужно вывести более подробно, то заменим Format-Table на Format-List

Get-EventLog –LogName ‘System’ | Format-List EntryType, TimeWritten, Source, EventID, Category, Message

Как видите формат уже более читабельный.

Format-List

Так же можно пофильтровать журналы например показать последние 20 сообщений

Get-EventLog –Logname ‘System’ –Newest 20

показать последние 20 сообщений

Или выдать список сообщение позднее  1 ноября 2014

Get-EventLog –LogName ‘System’ –After ‘1 ноября 2014’

Дополнительные продукты

Так же вы можете автоматизировать сбор событий, через такие инструменты как:

  • Комплекс мониторинга Zabbix
  • Через пересылку событий средствами Windows на сервер коллектор
  • Через комплекс аудита Netwrix
  • Если у вас есть SCOM, то он может агрегировать любые логи Windows платформ
  • Любые DLP системы

Так что вам выбирать будь то просмотр событий или PowerShell для просмотра событий windows, это уже ваше дело. Материал сайта pyatilistnik.org

Удаленный просмотр логов

  • Первый метод

Не так давно в появившейся операционной системе Windows Server 2019, появился компонент удаленного администрирования Windows Admin Center. Он позволяет проводить дистанционное управление компьютером или сервером, подробнее он нем я уже рассказывал. Тут я хочу показать, что поставив его себе на рабочую станцию вы можете подключаться из браузера к другим компьютерам и легко просматривать их журналы событий, тем самым изучая логи Windows. В моем примере будет сервер SVT2019S01, находим его в списке доступных и подключаемся (Напомню мы так производили удаленную настройку сети в Windows).

Удаленное подключение через Windows Admin Center

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

Просмотр логов Windows через Windows Admin Center

Если нужно произвести более тонкую фильтрацию логов, то вы можете воспользоваться кнопкой фильтра.

Фильтрация логов в Windows Admin Center

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

Настройка фильтрации логов Windows через Windows Admin Center

Вот пример фильтрации по событию 19.

Удаленный просмотр логов Windows

Очень удобно экспортировать полностью журнал в формат evxt, который потом легко открыть через журнал событий. Так, что Windows Admin Center, это мощное средство по просмотру логов.

  • Второй метод

Второй способ удаленного просмотров логов Windows, это использование оснастки управление компьютером или все той же «Просмотр событий». Чтобы посмотреть логи Windows на другом компьютере или сервере, в оснастке щелкните по верхнему пункту правым кликом и выберите из контекстного меню «Подключиться к другому компьютеру«.

Подключиться к другому компьютеру

Указываем имя другого компьютера, в моем примере это будет SVT2019S01

Указание имени удаленного компьютера для просмотра логов

Если все хорошо и нет блокировок со стороны брандмауэра или антивируса, то вы попадете в удаленный просмотр событий .если будут блокировки, то получите сообщение по типу, что не пролетает трафик COM+.

Ошибка удаленного просмотра логов Windows

Так же хочу отметить, что есть целые системы агрегации логов, такие как Zabbix или SCOM, но это уже другой уровень задач. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Содержание

  1. Просмотр «Журнала ошибок» в Windows 10
  2. «Журнал ошибок» в Виндовс 10
  3. Включение логирования
  4. Запуск «Просмотра событий»
  5. Анализ журнала ошибок
  6. Как посмотреть какая ошибка была на компьютере windows 10
  7. Подготовка к просмотру журнала ошибок
  8. Перед просмотром журнала ошибок
  9. Смотрим журнал ошибок и подробности ошибки
  10. Как посмотреть какая ошибка была на компьютере windows 10
  11. Журнал ошибок Windows 10 — как посмотреть отчет
  12. Журнал событий Windows 10 — что это такое и для чего нужен
  13. Как открыть журнал, посмотреть ошибки и где он находится
  14. При помощи консоли
  15. Через панель управления
  16. Функция поиска через меню «Пуск»
  17. Где и что находится в просмотре событий
  18. Анализ журнала ошибок
  19. Использование фильтров и настраиваемых представлений
  20. Как почистить журнал событий
  21. Журнал событий в Windows: как его открыть и найти информацию об ошибке
  22. Работа с журналом событий (для начинающих)

Просмотр «Журнала ошибок» в Windows 10

ZHurnal oshibok v Windows 10

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

«Журнал ошибок» в Виндовс 10

Упомянутый ранее журнал является лишь небольшой частью системной утилиты «Просмотр событий», которая по умолчанию присутствует в каждой версии Windows 10. Далее мы разберем три важных аспекта, которые касаются «Журнала ошибок» — включение логирования, запуск средства «Просмотр событий» и анализ системных сообщений.

Включение логирования

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

Zapusk Dispetchera zadach cherez panel zadach v Windows 10

Zapusk utilityi Sluzhbyi cherez Dispetcher zadach v Windows 10

Proverka sostoyaniya sluzhbyi ZHurnal sobyitiy Windows

Izmenenie parametrov sluzhbyi ZHurnal sobyitiy Windows

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

Preduprezhdenie pri deaktivatsii fayla podkachki v Windows 10

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

С включением логирования разобрались. Теперь двигаемся дальше.

Запуск «Просмотра событий»

Как мы уже упоминали ранее, «Журнал ошибок» входит в состав стандартной оснастки «Просмотр событий». Запустить ее очень просто. Делается это следующим образом:

Zapusk utilityi Prosmotr sobyitiy cherez komandnuyu stroku v Windows 10

В результате на экране появится главное окно упомянутой утилиты. Обратите внимание, что существуют и другие методы, которые позволяют запустить «Просмотр событий». О них мы в деталях рассказывали ранее в отдельной статье.

Анализ журнала ошибок

После того как «Просмотр событий» будет запущен, вы увидите на экране следующее окно.

Obshhiy vid utilityi Prosmotr sobyitiy pri zapuske v OS Windows 10

В левой его части находится древовидная система с разделами. Нас интересует вкладка «Журналы Windows». Нажмите на ее названии один раз ЛКМ. В результате вы увидите список вложенных подразделов и общую статистику в центральной части окна.

Otkryitie razdela ZHurnalyi Windows v utilite Prosmotr sobyitiy v Windows 10

Для дальнейшего анализа необходимо зайти в подраздел «Система». В нем находится большой список событий, которые ранее происходили на компьютере. Всего можно выделить четыре типа событий: критическое, ошибка, предупреждение и сведения. Мы вкратце расскажем вам о каждом из них. Обратите внимание, что описать все возможные ошибки мы не можем просто физически. Их много и все они зависят от различных факторов. Поэтому если у вас не получится что-то решить самостоятельно, можете описать проблему в комментариях.

Критическое событие

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

Primer kriticheskoy oshibki v zhurnale sobyitiy v Windows 10

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

Для более продвинутого пользователя есть специальная вкладка «Подробности», где все событие представлены с кодами ошибок и последовательно расписаны.

Ошибка

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

Primer standartnoy oshibki v ZHurnale sobyitiy v OS Windows 10

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

Предупреждение

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

Primer preduprezhdeniya v zhurnale sobyitiy v OS Windows 10

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

Сведения

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

Primer soobshheniy so svedeniyami v zhurnale sobyitiy v OS Windows 10

Подобная информация будет очень кстати для тех пользователей, которые не хотят устанавливать сторонний софт для просмотра последних действий Windows 10.

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

Помимо этой статьи, на сайте еще 12361 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Как посмотреть какая ошибка была на компьютере windows 10

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

Статья будет построена на примере windows 10, но данная функция доступна и в более ранних версиях windows.

Работа в ранних версиях ничем не отличается, за исключением не существенных отличий в виде оформления и мелких нюансов интерфейса.

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

Подготовка к просмотру журнала ошибок

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

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

log windows 1

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

log windows 2

Перед просмотром журнала ошибок

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

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

Смотрим журнал ошибок и подробности ошибки

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

log windows 3

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

log windows 4

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

Главное не торопиться, все проанализировать и используя наш могучий «инструмент» Интернет, принять правильное решение.

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

Источник

Как посмотреть какая ошибка была на компьютере windows 10

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

Конечно, большинству из нас гораздо удобнее было бы все подобные проверки проводить одним кликом, поэтому и пользуются такой невероятной популярностью всяческие приложения-оптимизаторы. Однако мой личный опыт говорит о том, что при решении проблем с Windows 10 (да и другими версиями) лучше всего использовать встроенные утилиты и системные методы. Этот способ гарантирует, что операционной системе не будет нанесён урон, а также предохраняет от всевозможных угроз от сторонних программ. Вообще работа всякого рода оптимизирующих приложений мне напоминает поведение слона в посудной лавке: не особо разбираясь с деталями, они любой ценой пытаются ускорить работу компьютера. Результат, как правило, довольно плачевный: скорость работа системы сначала увеличивается, а затем опять снижается, появляются неизвестные ошибки, отключаются нужные конкретному пользователю службы и т.п. Как результат, целостность самой Windows 10 нарушается, а от этого система начинает ещё больше тормозить и «глючить».

Итак, для того, чтобы проверить «десятку» на наличие ошибок существует встроенная утилита. Она называется SFC и работает во всех версиях операционной системы Windows начиная с XP. Чтобы её запустить для начала нужно открыть окно новой в Windows 10 Командной строки. Для этого надо кликнуть на меню Пуск ПРАВОЙ клавишей мыши и выбрать пункт «Windows PowerShell (администратор)».

Прежняя привычная версия Командной строки запускается через поиск (значок лупы на Панели задач). Вводим буквы cmd и правой клавишей запускаем найденный инструмент «Командная строка. Классическое приложение» от имени администратора.

Далее в открывшейся командной строке набираем команду «sfc /scannow» (без кавычек и с пробелом перед значком слэша) и нажимаем Enter. После этого начнётся сканирование системы, которое в зависимости от производительности компьютера может продолжаться от нескольких минут на быстрых машинах до часа и более на устаревших. Прогресс можно наблюдать в виде процентов выполнения операции.

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

blank

Если же появится сообщение «Программа защиты ресурсов Windows обнаружила повреждённые файлы, но не может восстановить некоторые из них», то можно продолжить операцию восстановления при помощи утилиты DISM, которая попробует исправить существующие ошибки.

Прежде чем запускать её, нужно подготовиться. Для начала выключаем компьютер и отключаем от него всё лишнее: флешки, другие съёмные накопители и т.п. Включаем и ждём загрузки системы. Когда Windows 10 полностью стартовала, смотрим, какие программы у нас запустились вместе с системой и закрываем их. Для этого, удерживая клавишу Alt, нажимаем Tab и мышью закрываем все активные программы. Также закрываем все запущенные приложения в правой части Панели задач (например, антивирус или Google Chrome, который даже при закрытом окне продолжает работать в фоновом режиме). Для этого наводим курсор на логотип программы в правом нижнем углу, кликаем правой клавишей мыши и выбираем «Выход».

Теперь нужно убедиться, что компьютер подключён к сети, а также, что режим электропитания не предусматривает отключение жёстких дисков от питания при длительной неактивности пользователя. Дело в том, что восстановление процесс не очень быстрый (у меня он занял минут 10-15), поэтому нужно обезопасить свой компьютер от выключения в ходе работы. Подключение к сети интернет должно оставаться активным, так как в процессе восстановления Windows может использовать центр обновления. Настройки электропитания можно проверить, кликнув ПРАВОЙ клавишей мыши на меню Пуск и выбрав третий пункт «Управление электропитанием.

После всего этого можно запустить командную строку. (напоминаю: cmd в поисковой строке и запуск от имени Администратора или Windows PowerShell (администратор) в меню Пуск правой клавишей мыши) Далее копируем отсюда и вставляем туда правой клавишей мыши следующую команду:

DISM.exe /Online /Cleanup-image /ScanHealth

blank

blank

Чтобы попытаться восстановить повреждённые части нашей операционной системы, вводим в Командную строку следующую команду и, как всегда, нажимаем Enter:

DISM.exe /Online /Cleanup-image /RestoreHealth

Начинается процесс, похожий на предыдущий и внешне, и по продолжительности. Опять около 10-15 минут, опять зависание на 20.0%.

В большинстве случаев утилите DISM удаётся всё исправить. Появляется сообщение: «Восстановление выполнено успешно». Напоследок можно перепроверить, остались ли ошибки в операционной системе утилитой SFC (смотри начало статьи).

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

blank

Источник

Журнал ошибок Windows 10 — как посмотреть отчет

При работе с ОС Windows 10 у пользователей могут возникать аппаратные и программные сбои. Чтобы владельцы персонального компьютера смогли узнать, из-за чего произошли неполадки, разработчиками был создан специальный журнал ошибок Windows 10. В нем фиксируется история ошибок и сбоев, а также источник их возникновения. Зайти в журнал можно с помощью штатных инструментов ОС: командной строки или панели управления. Таким образом, многие пользователи спрашивают, как посмотреть логи в Windows 10?

Журнал событий Windows 10 — что это такое и для чего нужен

Журнал событий представляет собой средство диагностики и устранения неисправностей ОС. При возникновении ошибок, создается специальный лог-файл, куда записывается отчет о проблемном программном обеспечении или системном компоненте ОС.

1. zaglavnaja 2

Журнал событий Виндовс

Благодаря анализу сборщика событий можно узнать причины неправильной работы ОС. Для качественной диагностики персонального компьютера предусмотрено несколько логов: «Приложения», «Установка», «Безопасность» и «Параметры ОС». В каждом из них регистрируются код сбоя, дата и время, а также поврежденные файлы, которые вызывают ошибку.

Какие отчеты можно посмотреть в сборщике системных событий:

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

2. registracija oshibok

В журнале событий содержится информация обо всех сбоях

Как открыть журнал, посмотреть ошибки и где он находится

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

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

К сведению! Открыть файлы с расширением «EVTX» с помощью встроенного текстового редактора невозможно.

При помощи консоли

Открыть журнал сборщика событий можно с помощью консоли системной отладки – PowerShell:

3. powershell

Открытие сборщика производится с помощью PowerShell

Через панель управления

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

Функция поиска через меню «Пуск»

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

Где и что находится в просмотре событий

Многие спрашивают, как посмотреть ошибки в Windows 10 и что находится в журнале. Вот ответ на последний вопрос:

4. otchet

Полный отчет о произошедшем сбое, который поможет установить причину неправильной работы ОС

Анализ журнала ошибок

Как анализировать журнал ошибок в ОС Виндовс 10:

Использование фильтров и настраиваемых представлений

Журнал сборщика событий регистрирует абсолютно все последние неполадки, которые произошли: от неправильного подключения к интернет-сети до удаления ненужного программного обеспечения. Чтобы оптимизировать сбор событий рекомендуется использовать специальные фильтры и настраивать представления.

5. filtry

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

Как почистить журнал событий

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

6. ochistka zhurnala

Очистка журнала производится через консоль PowerShell

Журнал событий Windows 10 позволяет пользователям персональных компьютеров получить информацию обо всех критически важных системных событиях. С его помощью можно устранить неполадки в работе программного обеспечения и системных компонентов. Открыть журнал можно с помощью консоли отладки или стартового меню. Чтобы получать только важные уведомления, следует настраивать фильтры представлений.

Источник

Журнал событий в Windows: как его открыть и найти информацию об ошибке

Prosmotr zhurnalov sobyitiyДоброго дня!

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

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

Работа с журналом событий (для начинающих)

Как его открыть

Этот вариант универсальный и работает во всех современных версиях ОС Windows.

eventvwr komanda dlya vyizova zhurnala sobyitiy

eventvwr — команда для вызова журнала событий

Prosmotr sobyitiy

Sistema i bezopasnost

Система и безопасность

Administrirovanie

Prosmotr sobyitiy Administrirovanie

Просмотр событий — Администрирование

Актуально для пользователей Windows 10/11.

1) Нажать по значку с «лупой» на панели задач, в поисковую строку написать «событий» и в результатах поиска ОС Windows предоставит вам ссылку на журнал (см. скрин ниже). 👇

Windows 10 sobyitiya

Windows 10 — события

2) Еще один способ: нажать сочетание Win+X — появится меню со ссылками на основные инструменты, среди которых будет и журнал событий.

WinX vyizov menyu

Журналы Windows

ZHurnalyi Windows

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

В нем есть 5 вкладок, из которых 3 основных: «Приложение», «Безопасность», «Система». Именно о них пару слов подробнее:

Как найти и просмотреть ошибки (в т.ч. критические)

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

Sistema filtr tekushhego zhurnala

Система — фильтр текущего журнала / Кликабельно

После указать дату, уровень события (например, ошибки), и нажать OK.

Kriticheskie oshibki

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

Например, на своем подопытном компьютере я нашел ошибку из-за которой он перезагрузился (благодаря коду ошибки и ее подробному описанию — можно найти решение на сайте Microsoft).

Predstavlenyi vse oishbki po date i vremeni ih vozniknoveniya

Представлены все ошибки по дате и времени их возникновения / Кликабельно

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

Можно ли отключить журналы событий

Можно! Только нужно ли? (хотя не могу не отметить, что многие считают, что на этом можно сэкономить толику дискового пространства, плюс система более отзывчива и меньше нагрузка на жесткий диск)

Для отключения журналов событий нужно:

Otkryivaem sluzhbyi services.msc universalnyiy sposob

Sluzhbyi zhurnalyi sobyitiy

Службы — журналы событий

Источник

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

https://gbcdn.mrgcdn.ru/uploads/post/2735/og_image/ce05da5c8c8f97a3bf7713b7cbaf3802.png

Иногда в приложении встречаются ошибки, которые нельзя увидеть даже после запуска. Например, код компилируется, проект запускается, но результат далёк от желаемого: приложение падает или вдруг появляется какая-то ошибка (баг). В таких случаях приходится «запасаться логами», «брать в руки отладчик» и искать ошибки.

Часто процесс поиска и исправления бага состоит из трёх шагов:

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

Если приложение не падает и чтение логов ничего не даёт, то найти точное место ошибки в коде помогает дебаггер (отладчик) — инструмент среды разработки.

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

    Это будет приложение, которое сравнивает два числа. Если числа равны, то будет выводиться результат «Равно», и наоборот. Начнём с простых шагов:

  1. Открываем Android Studio. 
  2. Создаём проект с шаблоном Empty Activity. 
  3. Выбираем язык Java, так как его, как правило, знают больше людей, чем Kotlin. 

Нам автоматически откроются две вкладки: activity_main.xml и MainActivity.java. Сначала нарисуем макет: просто замените всё, что есть в activity_main.xml, на код ниже:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">
 
  <EditText
     android:id="@+id/first_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toTopOf="parent" />
 
  <EditText
     android:id="@+id/second_number_et"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
 
  <Button
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Равно?"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/second_number_et" />
 
  <TextView
     android:id="@+id/answer_tv"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text=""
     android:textSize="32sp"
     app:layout_constraintLeft_toLeftOf="parent"
     app:layout_constraintRight_toRightOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>

Можете запустить проект и посмотреть, что получилось:

Теперь оживим наше приложение. Скопируйте в MainActivity этот код:

public class MainActivity extends AppCompatActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     final Button button = (Button) findViewById(R.id.button);
     final EditText first = (EditText) findViewById(R.id.first_number_et);
     final EditText second = (EditText) findViewById(R.id.second_number_et);
     final TextView answer = (TextView) findViewById(R.id.answer_tv);
 
     button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Integer firstInt = Integer.parseInt(first.getText().toString());
           Integer secondInt = Integer.parseInt(second.getText().toString());
           if (firstInt == secondInt) {
              answer.setText("Равно");
           } else {
              answer.setText("Равно");
           }
        }
     });
  }
}

В этом коде всё просто: 

  1. Находим поля ввода, поле с текстом и кнопку.
  2. Вешаем на кнопку слушатель нажатий.
  3. По нажатию на кнопку получаем числа из полей ввода и сравниваем их.
  4. В зависимости от результата выводим «Равно» или «Не равно».

Запустим приложение и введём буквы вместо чисел:

Нажмём на кнопку, и приложение упадёт! Время читать логи. Открываем внизу слева вкладку «6: Logcat» и видим:

Читать логи просто: нужно найти красный текст и прочитать сообщение системы. В нашем случае это java.lang.NumberFormatException: For input string: «f». Указан тип ошибки NumberFormatException, который говорит, что возникла какая-то проблема с форматированием числа. И дополнение: For input string: «f». Введено “f”. Уже можно догадаться, что программа ждёт число, а мы передаём ей символ. Далее в красном тексте видно и ссылку на проблемную строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). Проблема в методе onClick класса MainActivity, строка 24. Можно просто кликнуть по ссылке и перейти на указанную строку:

int firstInt = Integer.parseInt(first.getText().toString());

Конечно, метод parseInt может принимать только числовые значения, но никак не буквенные! Даже в его описании это сказано — и мы можем увидеть, какой тип ошибки этот метод выбрасывает (NumberFormatException).

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

  • красный текст;
  • тип ошибки — в нашем случае это NumberFormatException;
  • пояснение — у нас это For input string: «f»;
  • ссылка на строку, на которой произошла ошибка — здесь видим MainActivity.java:26. 

Исправим эту ошибку и обезопасим себя от некорректного ввода. Добавим в наши поля ввода android:inputType=»number», а остальной код оставим без изменений:

...
<EditText
  android:id="@+id/first_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toTopOf="parent" />
 
<EditText
  android:id="@+id/second_number_et"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:ems="10"
  android:gravity="center"
  android:inputType="number"
  app:layout_constraintLeft_toLeftOf="parent"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toBottomOf="@+id/first_number_et" />
...

    Теперь можем вводить только числа. Проверим, как работает равенство: введём одинаковые числа в оба поля. Всё в порядке:

На равенство проверили. Введём разные числа: 

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

  1. Воспроизведём ошибку: да, ошибка воспроизводится стабильно с любыми двумя разными числами.
  2. Подумаем, где может быть ошибка: наверняка там, где сравниваются числа. Туда и будем смотреть.
  3. Исправим ошибку: сначала найдём её с помощью дебаггера, а когда поймём, в чём проблема, — будем исправлять.

И здесь на помощь приходит отладчик. Для начала поставим точки останова сразу в трёх местах:

    Чтобы поставить или снять точку останова, достаточно кликнуть левой кнопкой мыши справа от номера строки или поставить курсор на нужную строку, а затем нажать CTRL+F8. Почему мы хотим остановить программу именно там? Чтобы посмотреть, правильные ли числа сравниваются, а затем определить, в какую ветку в нашем ветвлении заходит программа дальше. Запускаем программу с помощью сочетания клавиш SHIFT+F9 или нажимаем на кнопку с жучком:

  

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

Вы в режиме дебага. Обратите внимание на две вещи:

  1. Точки останова теперь помечены галочками. Это значит, что вы находитесь на экране, где стоят эти точки, и что дебаггер готов к работе.
  2. Открылось окно дебага внизу: вкладка «5: Debug». В нём будет отображаться необходимая вам информация.

    Введём неравные числа и нажмём кнопку «РАВНО?». Программа остановилась на первой точке:

Давайте разбираться:

  1. Сразу подсвечивается синим строка, где программа остановлена: в окне кода на 28-й строке и в левом окне отладчика (там даже можно увидеть, какой метод вызван, — onClick).
  2. В правом, основном окне отладчика, всё гораздо интереснее. Здесь можно увидеть инстансы наших вью (answer, first, second), в конце которых серым текстом даже отображаются их id. Но интереснее всего посмотреть на firstInt и secondInt. Там записаны значения, которые мы сейчас будем сравнивать.

Как видим, значения именно такие, какие мы и ввели. Значит, проблема не в получении чисел из полей. Давайте двигаться дальше — нам нужно посмотреть, в правильную ли ветку мы заходим. Для этого можно нажать F8 (перейти на следующую строку выполнения кода). А если следующая точка останова далеко или в другом классе, можно нажать F9 — программа просто возобновит работу и остановится на следующей точке. В интерфейсе эти кнопки находятся здесь:

Остановить дебаггер, если он больше не нужен, можно через CTRL+F2 или кнопку «Стоп»:

    В нашем случае неважно, какую кнопку нажимать (F9 или F8). Мы сразу переходим к следующей точке останова программы:

Ветка правильная, то есть логика программы верна, числа firstInt и secondInt не изменились. Зато мы сразу видим, что подпись некорректная! Вот в чём была ошибка. Исправим подпись и проверим программу ещё раз.

    Мы уже починили два бага: падение приложения с помощью логов и некорректную логику (с помощью отладчика). Хеппи пас (happy path) пройден. То есть основная функциональность при корректных данных работает. Но нам надо проверить не только хеппи пас — пользователь может ввести что угодно. И программа может нормально работать в большинстве случаев, но вести себя странно в специфических состояниях. Давайте введём числа побольше и посмотрим, что будет:

Не сработало — программа хочет сказать, что 1000 не равна 1000, но это абсурд. Запускаем приложение в режиме отладки. Точка останова уже есть. Смотрим в отладчик:

Числа одинаковые, что могло пойти не так? Обращаем внимание на тип переменной — Integer. Так вот в чём проблема! Это не примитивный тип данных, а ссылочный. Ссылочные типы нельзя сравнивать через ==, потому что будут сравниваться ссылки объектов, а не они сами. Но для Integer в Java есть нюанс: Integer может кешироваться до 127, и если мы вводим по единице в оба поля числа до 127, то фактически сравниваем просто int. А если вводим больше, то получаем два разных объекта. Адреса у объектов не совпадают, а именно так Java сравнивает их.

Есть два решения проблемы:

  1. Изменить тип Integer на примитив int.
  2. Сравнивать как объекты.

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

if (firstInt.equals(secondInt)) {
  answer.setText("Равно");
} else {
  answer.setText("Не равно");
}

Проверяем:

Всё работает. Наконец-то! Хотя… Давайте посмотрим, что будет, если пользователь ничего не введёт, но нажмёт на кнопку? Приложение опять упало… Смотрим в логи:

Опять NumberFormatException, при этом строка пустая. Давайте поставим точку останова на 26-й строке и заглянем с помощью отладчика глубже.

Нажмём F8 — и перейдём в глубины операционной системы:

    Интересно! Давайте обернём код в try/catch и посмотрим ошибке в лицо. Если что, поправим приложение. Выделяем код внутри метода onClick() и нажимаем Ctrl+Alt+T:

Выбираем try / catch, среда разработки сама допишет код. Поставим точку останова. Получим:

Запускаем приложение и ловим ошибку:

Действительно, как и в логах, — NumberFormatException. Метод parseInt выбрасывает исключение, если в него передать пустую строку. Как обрабатывать такую проблему — решать исключительно вам. Два самых простых способа:

  1. Проверять получаемые строки first.getText().toString() и second.getText().toString() на пустые значения. И если хоть одно значение пустое — говорить об этом пользователю и не вызывать метод parseInt.
  2. Или использовать уже готовую конструкцию try / catch:

Теперь-то точно всё в порядке! Хотя профессиональным тестировщикам это приложение никто не отдавал: поищете ещё ошибки? :)

Дебаг и поиск ошибок

Время на прочтение
6 мин

Количество просмотров 5.3K

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

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

Как обнаружить ошибку

Прочитай информацию об исключении

Если выполнение программы прерывается исключением, то это первое место откуда стоит начинать поиск. 

В каждом языке есть свои способы уведомления об исключениях. Например в JavaScript для обработки ошибок связанных с Web Api существует DOMException. Для пользовательских сценариев есть базовый тип Error. В обоих случаях в них содержится информация о наименовании и описании ошибки.

Для .NET существует класс Exception и каждое исключение в приложении унаследовано от данного класса, который представляет ошибки происходящие во время выполнения программы. В свойстве Message читаем текст ошибки. Это даёт общее понимание происходящего. В свойстве Source смотрим в каком объекте произошла ошибка. В InnerException смотрим, нет ли внутреннего исключения и если было, то разворачиваем его и смотрим информацию уже в нём. В свойстве StackTrace хранится строковое представление информации о стеке вызова в момент появления ошибки.

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

Всю полученную информацию читаем вдумчиво и внимательно. Любая деталь важна при поиске ошибки. Иногда начинающие разработчики не придают значения этому описанию. Например в .NET при возникновении ошибки NRE с описанием параметра, который разработчик задаёт выше по коду. Из-за этого думает, что параметр не может быть NRE, а значит ошибка в другом месте. На деле оказывается, что ошибки транслируют ту картину, которую видит среда выполнения и первым делом за гипотезу стоит взять утверждение, что этот параметр равен null. Поэтому разберитесь при каких условиях параметр стал null, даже если он определялся выше по коду.

Пример неявного переопределения параметров — использование интерцептора, который изменяет этот параметр в запросе и о котором вы не знаете.

Разверните стек

Когда выбрасывается исключение, помимо самого описания ошибки полезно изучить стек выполнения. Для .NET его можно посмотреть в свойстве исключения StackTrace. Для JavaScript аналогично смотрим в Error.prototype.stack (свойство не входит в стандарт) или можно вывести в консоль выполнив console.trace(). В стеке выводятся названия методов в том порядке в котором они вызывались. Если то место, где падает ошибка зависит от аргументов которые пришли из вызывающего метода, то если развернуть стек, мы проследим где эти аргументы формировались.

Загуглите текст ошибки

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

Прочитайте документацию

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

Проведите исследовательское тестирование

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

Бинарный поиск

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

Где обитают ошибки

Ошибки в своём коде

Самые распространенные ошибки. Мы писали код, ошиблись в формуле, забыли присвоить значение переменной или что-то не проинициализировали перед вызовом. Такие ошибки легко исправить и легко найти место возникновения если внимательно прочитать описание возникшей ошибки.

Ошибки в чужом коде

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

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

Ошибки в библиотеках

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

Первый случай хотя и редкий, но не стоит о нём забывать. В этом случае можно откатиться на другую версию библиотеки и создать Issue с описанием проблемы. Если это open-source и нет времени ждать обновления, можно собрать свою версию исправив баг самостоятельно, с последующей заменой на официальную исправленную версию.

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

Ошибки не воспроизводимые локально

Ошибка воспроизводится на develop стенде или в production, но не воспроизводится локально. Такие ошибки сложнее отлавливать потому что не всегда есть возможность  запустить дебаг на удалённой машине. Поэтому убеждаемся, что ваше окружение соответствует внешнему. 

Проверьте версию приложения

На стенде и локально версии приложения должны совпадать. Возможно на стенде приложение развёрнуто из другой ветки.

Проверьте данные

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

Проверьте соответствие окружений

Если проект на стенде развёрнут в контейнере, то в некоторых IDE (JB RIder) можно дебажить в контейнере. Если проект развёрнут не в контейнере, то воспроизводимость ошибки может зависеть от окружения. Хотя .Net Core мультиплатформенный фреймворк, не всё что работает под Windows так же работает под Linux. В этом случае либо найти рабочую машину с таким же окружением, либо воспроизвести окружение через контейнеры или виртуальную машину.

Коварные ошибки

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

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

Дополнительные материалы

Алгоритм отладки

  1. Повтори ошибку.

  2. Опиши проблему.

  3. Сформулируй гипотезу.

  4. Проверь гипотезу — если гипотеза проверку не прошла то п.3.

  5. Примени исправления.

  6. Убедись что исправлено — если не исправлено, то п.3.

Подробнее ознакомиться с ним можно в докладе Сергея Щегриковича «Отладка как процесс».

Чем искать ошибки, лучше не допускать ошибки. Прочитайте статью «Качество вместо контроля качества», чтобы узнать как это делать.

Итого

  1. При появлении ошибки в которой сложно разобраться сперва внимательно и вдумчиво читаем текст ошибки. 

  2. Смотрим стек выполнения и проверяем, не находится ли причина возникновения выше по стеку.

  3. Если по прежнему непонятно, гуглим текст и ищем похожие случаи. 

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

  5. Если нет документации проводим исследовательское тестирование.

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

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

В приложении произошел сбой — как исправить ошибку. Видели такую ошибку? А мы нашли несколько способов, как ее исправить! Фото.

Видели такую ошибку? А мы нашли несколько способов, как ее исправить!

Содержание

  • 1 Из-за чего случаются сбои приложений
  • 2 В приложении произошел сбой — что делать
    • 2.1 Удалить Android System Webview
    • 2.2 Как остановить приложение на Андроиде
    • 2.3 Как очистить приложение
    • 2.4 Переустановка приложения
    • 2.5 Как удалить обновление приложения

Из-за чего случаются сбои приложений

Из-за чего случаются сбои приложений. Подобная ошибка выскакивает даже в играх. Фото.

Подобная ошибка выскакивает даже в играх

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

  • конфликт программного обеспечения;
  • неправильная установка приложения;
  • установка плохо оптимизированного обновления;
  • переполнение оперативного запоминающего устройства (ОЗУ);
  • повреждение данных кэша.

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

В приложении произошел сбой — что делать

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

Удалить Android System Webview

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

  1. Запустите Google Play.
  2. Найдите в магазине приложение Android System Webview.
  3. Нажмите кнопку «Удалить».

Удалить Android System Webview. Этот вариант вряд ли поможет, если ошибка появляется только в одном приложении. Фото.

Этот вариант вряд ли поможет, если ошибка появляется только в одном приложении

Избавление от этой программы не вызовет серьезных последствий, но предварительно я все-таки рекомендую вам прочитать наш текст, в котором мы подробно рассказываем, что такое Android System Webview.

Как остановить приложение на Андроиде

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

  1. Открыть настройки телефона.
  2. Перейти в раздел «Приложения», а затем — «Все приложения».
  3. Найти конфликтную программу.
  4. Нажать кнопку «Закрыть» или «Отключить».

Как остановить приложение на Андроиде. Также можно закрыть программу через список запущенных приложений. Фото.

Также можно закрыть программу через список запущенных приложений

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

Как очистить приложение

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

  1. Откройте настройки устройства.
  2. Найдите интересующую программу через раздел «Приложения».
  3. Нажмите кнопку «Очистить» и подтвердите свое действие нажатием на «Очистить все».

Как очистить приложение. Сначала попробуйте очистить только кэш, чтобы не потерять данные приложения. Фото.

Сначала попробуйте очистить только кэш, чтобы не потерять данные приложения

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

Переустановка приложения

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

  1. Удерживаем палец на иконке приложения.
  2. Нажимаем кнопку «Удалить».
  3. Заново устанавливаем программу через Google Play, другой магазин приложений или APK-файл.

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

Это лишь один из нескольких способов переустановки программ

Также можно удалить программу через настройки телефона или в Google Play. Если приложение не удаляется, то, скорее всего, она является стандартным и в случае с ним неполадки устраняются иначе.

Как удалить обновление приложения

Судя по комментариям в нашем телеграм-чате, чаще всего люди жалуются на то, что у них произошел сбой в приложении Google Play или в другой предустановленной программе вроде YouTube или Chrome, которая не поддается удалению. Несмотря на это, проблему все равно можно решить буквально за одну минуту:

  1. Откройте настройки смартфона.
  2. Найдите конфликтующую программу в разделе «Приложения».
  3. Нажмите кнопку «Удалить обновления».

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

Если не можете найти в списке нужную программу, активируйте опцию «Показать системные приложения»

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

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

Шаг 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 в строке формата — это 12-часовой формат времени. Вот оно что! Поменял формат на yyMMddHHmmss, и ошибка исчезла.

Перевод статьи «How to fix bugs, step by step»

Понравилась статья? Поделить с друзьями:
  • Как узнать причину ошибки windows
  • Как узнать ошибку при запуске
  • Как узнать причину ошибки 500
  • Как узнать ошибку после синего экрана
  • Как узнать предложения с речевыми ошибками