Как исправить ошику

Как исправить свою ошибку

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

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

1

Признайте свою роль в ситуации

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

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

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

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

2

Тщательно все продумайте

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

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

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

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

3

Начните разговор первым

  • В первую очередь признайте свою ошибку и будьте точны в датах, тщательно подбирайте слова: «Мне очень жаль что я нарушил свое обещание в прошлую пятницу».
  • Скажите о том, что понимаете, как ваши действия или слова обидели чувства этого человека. Как только захотите сказать, что это и его вина тоже, сдержитесь и следуйте своему плану: «Я поступил эгоистично и тебе пришлось остаться на работе допоздна. Я подвел тебя и понимаю, что ты чувствуешь. На твоем месте мне бы тоже было неприятно».
  • Скажите о том, насколько важен человек для вас: «Для меня важна наша дружба и я ценю то время, которое провожу с тобой».
  • Загладьте вину: «Знаю, ты просил моей помощи, а я тебе не помог. Давай я заглажу свою вину и возьму всю работу на себя».

4

Сделайте выводы из своей ошибки

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

Еще одним выводом может стать ваше решение научиться контролировать свои эмоции. Или грамотно справляться со стрессом. Задайте себе простой вопрос: «Что мне нужно сделать, чтобы такого не повторилось?». Если ответом будет «Я уверен, что не повторится», это плохой ответ, потому что не предполагает работы над собой.

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

Желаем вам удачи!


Загрузить PDF


Загрузить PDF

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

  1. Изображение с названием Fix Your Mistakes Step 1

    1

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

    • Определите ошибку. Вы что-то не то сказали? Случайно допустили ошибку в школьном или рабочем проекте? Забыли помыть ванную, как обещали?
    • Поймите, как и почему вы совершили ошибку. Вы сделали это нарочно, но позже пожалели об этом? Или же вы просто не были достаточно внимательным? Поразмышляйте над ситуацией, например: “Как же я забыл убраться в ванной? Я не хотел убираться там, хотел избежать этой работы? Я был слишком занят?”.
    • Если вы не уверены, что же сделали не так, спросите друга, члена семьи, учителя, сотрудника, начальника, чтобы этот человек помог вам узнать, в чем ошибка. Например, если кто-то зол на вас, можете спросить: “Я вижу, что ты зол на меня, можешь объяснить почему?”. Человек может ответить: “Я зол на тебя, потому что ты сказал, что уберешься в ванной, но ты этого не сделал”.
  2. Изображение с названием Fix Your Mistakes Step 2

    2

    Помните свои прошлые ошибки.[1]
    Обратите внимание на свои модели поведения и на то, какие подобные проблемы были у вас в прошлом. Было ли так, что вы и в прошлом забывали что-то сделать?

    • Запишите все паттерны и темы, которые, как вы заметили, продолжают возникать. Это поможет вам определить более крупную цель, над которой вам нужно работать (сосредоточение, определенные навыки, и так далее). Например, возможно, вы склонны забывать о тех задачах, которые не хотите выполнять, например, об уборке. Это будет признаком того, что вы уклоняетесь от задания или что вам нужно стать более организованным, чтобы не забывать выполнять определенные обязательства.
  3. Изображение с названием Fix Your Mistakes Step 3

    3

    Берите ответственность на себя. Поймите, что это ваша и только ваша ошибка. Берите на себя ответственность за собственные ошибки и не пытайтесь свалить вину на кого-то другого.[2]
    Если вы играете в поиски виноватого, то не сможете учиться на собственных промахах, так как можете продолжать совершать одни и те же ошибки снова и снова.

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

    Реклама

  1. Изображение с названием Fix Your Mistakes Step 4

    1

    Подумайте о прошлых решениях. [3]
    Один из лучших способов решить проблему или исправить ошибку – определить, как вы справлялись с подобными проблемами или ошибками в прошлом. Поразмышляйте над следующим: “В прошлом я не забывал, что мне нужно сделать, как у меня это получалось? Ах, точно, я записывал дела в календарь и заглядывал в него несколько раз в день!”.

    • Составьте список подобных совершенных вами ошибок. Определите, как вы обошлись с каждой из этих ошибок, и было ли это полезным для вас или нет. Если нет, то, вероятно, подобное решение не сработает и в этот раз.
  2. Изображение с названием Fix Your Mistakes Step 5

    2

    Рассмотрите возможные варианты.[4]
    Придумайте как можно больше способов исправить ошибку. В нашем примере есть множество вариантов: вы могли бы убрать ванную, извиниться, предложить убраться и в другой части квартиры, договориться, сделать это на следующий день, и так далее.

    • Используйте свои навыки решения проблем, чтобы придумать возможные варианты решения текущей проблемы.
    • Составьте список плюсов и минусов для каждого возможного решения. Например, если вы определили, что одним из возможных вариантов решения вашей проблемы невымытой ванной будет “обязательно убраться в ванной завтра”, то список плюсов и минусов может выглядеть так: плюс – ванная в конечном итоге будет чистой, минусы – сегодня она будет неубранной, завтра я могу забыть об уборке (я не могу полностью гарантировать, что это будет сделано), это не поможет решить проблему того, что я забыл убраться в ванной. Основываясь на этой оценке, было бы лучше навести порядок в ванной в тот же день, а не следующий, если это возможно, и разработать план того, как в будущем не забывать убираться в этой комнате.
  3. Изображение с названием Fix Your Mistakes Step 6

    3

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

    • Доводите дело до конца. Если вы пообещали исправить проблему, сделайте это. Надежность очень важна в построении доверительных отношений с людьми и формировании прочных связей.[6]
  4. Изображение с названием Fix Your Mistakes Step 7

    4

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

    • Определите другие возможные решения и запишите их от наиболее полезных до наименее полезных. Пройдитесь по списку сверху донизу. К возможным вариантам могут относиться: предложить убраться в другой комнате, искренне извиниться, спросить человека, как вы можете загладить вину, или предложить ему то, что ему нравится (еду, занятия, и так далее).
  5. Изображение с названием Fix Your Mistakes Step 8

    5

    Не допускайте ошибок в будущем. Если вы сможете успешно найти решение вашей ошибки, то вы начинаете процесс успеха в будущем избежании ошибок.[7]

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

    Реклама

  1. Изображение с названием Fix Your Mistakes Step 9

    1

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

    • Простите себя и двигайтесь дальше, вместо того чтобы зацикливаться на своей проблеме.
    • Сосредоточьтесь на том, чтобы сейчас и впредь поступать правильно.
  2. Изображение с названием Fix Your Mistakes Step 10

    2

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

  3. Изображение с названием Fix Your Mistakes Step 11

    3

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

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

    Реклама

  1. Изображение с названием Fix Your Mistakes Step 12

    1

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

    • Не будьте пассивным: не стоит избегать разговоров о своей ошибке, прятаться, соглашаться с тем, чего хотят от вас другие, и не отстаивать себя.
    • Не проявляйте агрессии: не повышайте тон, не кричите, не унижайте людей, не проклинайте, не проявляйте насильственного поведения (не бросайтесь вещами, не распускайте руки).
    • Избегайте пассивно-агрессивного поведения. Это смешение пассивной и агрессивной форм общения, когда вы можете злиться, но не высказываете своих чувств. Поэтому вы можете сделать что-то у человека за спиной, чтобы отомстить, или устроить бойкот-молчанку. Это не лучшая форма общения, кроме того человек может не понять, о чем вы пытаетесь сообщить ему и почему вы так поступаете.
    • Посылайте положительные невербальные сообщения. Наше невербальное общение тоже посылает определенные сообщения людям вокруг нас. Улыбка, например, говорит: “Да, я должен хмуриться, но я могу быть храбрым и пройти через это”.
  2. Изображение с названием Fix Your Mistakes Step 13

    2

    Используйте навыки активного слушания. Позвольте расстроенному человеку излить свое разочарование и не торопитесь с ответом.[10]

    • Постарайтесь сосредоточиться только на том, чтобы слушать человека, вместо того чтобы думать о том, как ему ответить. Сосредоточьтесь на мыслях и чувствах человека, которого слушаете, а не на своих.
    • Сделайте краткие заявления и задайте уточняющие вопросы, например: “Я так понял, что ты был зол и расстроен из-за того, что я не убрался в ванной, правильно?”.
    • Сопереживайте. Проявите понимание и поставьте себя на место другого человека.
  3. Изображение с названием Fix Your Mistakes Step 14

    3

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

    • Не пытайтесь найти оправдания и все объяснить. Просто признайте свой промах. Скажите: “Я признаю, что забыл убраться в ванной. Мне очень жаль ”.
    • Будьте осторожны, не обвиняйте других. Не стоит говорить что-то вроде: “Если бы ты напомнил мне, что нужно там убраться, то, может быть, я не забыл бы, и ванная была бы уже чистой”.
  4. Изображение с названием Fix Your Mistakes Step 15

    4

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

    • Постарайтесь разработать решение. Спросите человека, что вы можете для него сделать, чтобы компенсировать ошибку. Можете прямо сказать: “Могу ли я что-то для тебя сделать?”.
    • Поймите, как можно поступить по-другому в будущем. Можете спросить у человека: “Как ты думаешь, что может помочь мне избежать этой ошибки в будущем?”.
    • Скажите человеку, что вы готовы приложить свои усилия, чтобы снизить вероятность совершения этой ошибки в будущем. Можно сказать следующее: “Я не хочу, чтобы в будущем это произошло снова, поэтому я буду прилагать усилия, чтобы…”. Скажите, что конкретно вы будете делать, например: “Я обязательно составлю список домашних дел, чтобы не забыть об этом снова”.

    Реклама

Советы

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

Реклама

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

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

Реклама

Об этой статье

Эту страницу просматривали 20 219 раз.

Была ли эта статья полезной?

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

Навигация по статье

  1. ТОП-10 программ по исправлению ошибок в тексте
  2. Сравнение возможностей сервисов

ТОП-10 программ по исправлению ошибок в тексте

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

Orfogrammka.ru

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

  • наличие тавтологии;
  • водность текста;
  • иностранные слова;
  • замену символов.

Сервис работает по подписке, которая предоставляет доступ к полноценной работе на один месяц.  Стоимость ее обойдется пользователю в 300 рублей. Здесь также есть возможность проверить 6 тысяч символов текста с пробелами в тестовом режиме. Это же касается и исправления ошибок.

Яндекс.Спеллер

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

Text.ru

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

Advego

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

  • расчет количества символов;
  • выявление орфографических ошибок;
  • количество вхождений слов;
  • водность текста;
  • тошнота текста (академ. и классическая);
  • уникальность текста.

Орфограф

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

Onlinecorrector

У этой программы проверки текстов есть одна специфическая функция — она способна проверять Google-документы. Это расширение требует установки в браузере, после чего с сервисом можно работать в режиме онлайн.

Орфо

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

LanguageTool

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

Мета.ua

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

Главред

Сайт Главред предлагает интересную функцию — проверку не только орфографического, но и смыслового качества текста. Это позволяет оценить текст сразу по нескольким критериям. Все предлагаемые исправления в тексте подчеркиваются пунктиром.

Присоединяй­тесь к
Rush-Analytics уже сегодня

7-ми дневный бесплатный доступ к полному функционалу. Без привязки карты.

Попробовать бесплатно

Присоединяй­тесь кRush-Analytics уже сегодня

Сравнение возможностей сервисов

Название сервиса / программы Проприетарность Версия Автокоррекция
Orfogrammka.ru Платная Онлайн Нет
Яндекс.Спеллер Бесплатная Онлайн Нет
Text.ru Платная и бесплатная Онлайн Нет
Advego Платная и бесплатная Онлайн и офлайн Нет
Орфограф Платная Онлайн Нет
Onlinecorrector Платная и бесплатная Онлайн и офлайн Нет
Орфо Платная и бесплатная Онлайн и офлайн Да
LanguageTool Платная и бесплатная Онлайн и офлайн Да
Мета.ua Бесплатная Онлайн Да
Главред Бесплатная Онлайн Нет

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


Как снять ошибку

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

Как снять ошибку

Инструкция

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

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

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

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

Для диагностики в целом, желательно проверить ошибки при помощи программы IObit Security 360, программа диагностирует проблемы компьютера и решает их впоследствии. Указывает на не обновленные приложения (в т.ч. обновление Windows), помогает очистить ненужные файлы, реестр и т.д.

Видео по теме

Войти на сайт

или

Забыли пароль?
Еще не зарегистрированы?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

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

Шаг 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»

Понравилась статья? Поделить с друзьями:
  • Как найти массу груза на пружинном маятнике
  • Как составить проводку по бюджетному учету
  • Снапчат для животных как найти
  • Как составить график упражнений в домашних условиях
  • Как найти модальный размер