Все совершают ошибки. Мы говорим необдуманные вещи, нарушаем обещания или выносим плохое суждение о ком-либо — и это лишь малая часть того, что может случиться в жизни и на рабочем месте. Немногие знают, как исправить собственную ошибку, даже если последствия будут крайне неприятны. Если вы не пытаетесь исправлять свои ошибки из-за неправильных поступков, ваши взаимоотношения и репутация могут серьезно пострадать. Хорошая новость в том, что признание своих ошибок и правильные выводы могут исправить ситуацию и даже сделать ее лучше.
Есть огромная разница между извинением и исправлением ошибки. В первом случае вы просто просите прощения за то, что причинили кому-то боль. Во втором случае вы совершаете определенные действия, которые восстанавливают баланс в отношениях с человеком.
1
Признайте свою роль в ситуации
Если конфликтная ситуация произошла только что, дайте себе время успокоиться. Даже если вы сразу осознали, что оскорбили человека, все равно должно пройти какое-то время.
Осознайте свою роль в этой ситуации. Часто люди не замечают своей вины за своими гневом, обвинениями, агрессивностью и оборонительной позицией. Даже через некоторое время они не признают своей роли в конфликте, если были полностью виновны.
Посмотрите на ситуацию глазами человека, которого вы обидели. Как ваша ошибка повлияла на него? Вы ему причинили неудобство или нанесли обиду? Развивать эмпатию полезно все равно, однако в этом случае ее роль неоценима.
Первый шаг очень важен, потому что без осознания своей вины вы будете неискренними, а уж тем более не захотите исправлять ошибку, которую таковой не считаете.
2
Тщательно все продумайте
Подумайте о том, что вы можете сделать для того, чтобы возместить нанесенный ущерб. Вам придется восстановить утраченное доверие.
Проще говоря, у вас должна быть хоть какая-то идея и твердое намерение воплотить ее в жизнь. Дайте человеку понять, что вам есть дело до случившегося.
Однако ваша вина может привести к гиперкомпенсации. Опасность такой ситуации в том, что вы можете выглядеть неискренним, если ваше наказание самого себя будет в стократ больше самого преступления.
Создайте мини-план будущего разговора и выясните, куда он может завести. Четко решите, что не будете реагировать на раздражительный тон собеседника. Возможно он захочет говорить совершенно о другом, тогда вам придется согласиться и надеяться на экспромт.
3
Начните разговор первым
- В первую очередь признайте свою ошибку и будьте точны в датах, тщательно подбирайте слова: «Мне очень жаль что я нарушил свое обещание в прошлую пятницу».
- Скажите о том, что понимаете, как ваши действия или слова обидели чувства этого человека. Как только захотите сказать, что это и его вина тоже, сдержитесь и следуйте своему плану: «Я поступил эгоистично и тебе пришлось остаться на работе допоздна. Я подвел тебя и понимаю, что ты чувствуешь. На твоем месте мне бы тоже было неприятно».
- Скажите о том, насколько важен человек для вас: «Для меня важна наша дружба и я ценю то время, которое провожу с тобой».
- Загладьте вину: «Знаю, ты просил моей помощи, а я тебе не помог. Давай я заглажу свою вину и возьму всю работу на себя».
4
Сделайте выводы из своей ошибки
Из любой ошибки можно сделать правильные выводы и стать лучше. Однако если вы думаете, что теперь нужно совершать ошибки, то помните, что главный вывод — не повторять одни и те же.
Еще одним выводом может стать ваше решение научиться контролировать свои эмоции. Или грамотно справляться со стрессом. Задайте себе простой вопрос: «Что мне нужно сделать, чтобы такого не повторилось?». Если ответом будет «Я уверен, что не повторится», это плохой ответ, потому что не предполагает работы над собой.
В особых случаях человек может быть неготовым простить вас и не принимает вашего прощения. Не давите на этого человека и не требуйте простить вас. Дайте ему время и пространство для того, чтобы оправиться от этого удара.
Желаем вам удачи!
Загрузить PDF
Загрузить PDF
Все мы время от времени совершаем ошибки. К повседневным ошибкам можно отнести погрешность в конкретной задаче (в письме, наборе текста, диаграмме и тому подобное), оскорбление человека, действие, о котором вы впоследствии сожалеете, участие в рискованных ситуациях. Так как неприятные случайности довольно распространены, всем нам необходимо научиться исправлять их и справляться с ними. Исправление любого промаха включает: понимание своей ошибки, составление плана, забота о себе и правильное общение.
-
1
Распознайте свою ошибку. Чтобы что-то исправить, сначала нужно понять, что же вы сделали неправильно.
- Определите ошибку. Вы что-то не то сказали? Случайно допустили ошибку в школьном или рабочем проекте? Забыли помыть ванную, как обещали?
- Поймите, как и почему вы совершили ошибку. Вы сделали это нарочно, но позже пожалели об этом? Или же вы просто не были достаточно внимательным? Поразмышляйте над ситуацией, например: “Как же я забыл убраться в ванной? Я не хотел убираться там, хотел избежать этой работы? Я был слишком занят?”.
- Если вы не уверены, что же сделали не так, спросите друга, члена семьи, учителя, сотрудника, начальника, чтобы этот человек помог вам узнать, в чем ошибка. Например, если кто-то зол на вас, можете спросить: “Я вижу, что ты зол на меня, можешь объяснить почему?”. Человек может ответить: “Я зол на тебя, потому что ты сказал, что уберешься в ванной, но ты этого не сделал”.
-
2
Помните свои прошлые ошибки.[1]
Обратите внимание на свои модели поведения и на то, какие подобные проблемы были у вас в прошлом. Было ли так, что вы и в прошлом забывали что-то сделать?- Запишите все паттерны и темы, которые, как вы заметили, продолжают возникать. Это поможет вам определить более крупную цель, над которой вам нужно работать (сосредоточение, определенные навыки, и так далее). Например, возможно, вы склонны забывать о тех задачах, которые не хотите выполнять, например, об уборке. Это будет признаком того, что вы уклоняетесь от задания или что вам нужно стать более организованным, чтобы не забывать выполнять определенные обязательства.
-
3
Берите ответственность на себя. Поймите, что это ваша и только ваша ошибка. Берите на себя ответственность за собственные ошибки и не пытайтесь свалить вину на кого-то другого.[2]
Если вы играете в поиски виноватого, то не сможете учиться на собственных промахах, так как можете продолжать совершать одни и те же ошибки снова и снова.- Запишите те части проблемы, которым вы посодействовали, или конкретную ошибку, которую совершили.
- Определите, что конкретно вы могли бы сделать по-другому, чтобы получить лучший результат.
Реклама
-
1
Подумайте о прошлых решениях. [3]
Один из лучших способов решить проблему или исправить ошибку – определить, как вы справлялись с подобными проблемами или ошибками в прошлом. Поразмышляйте над следующим: “В прошлом я не забывал, что мне нужно сделать, как у меня это получалось? Ах, точно, я записывал дела в календарь и заглядывал в него несколько раз в день!”.- Составьте список подобных совершенных вами ошибок. Определите, как вы обошлись с каждой из этих ошибок, и было ли это полезным для вас или нет. Если нет, то, вероятно, подобное решение не сработает и в этот раз.
-
2
Рассмотрите возможные варианты.[4]
Придумайте как можно больше способов исправить ошибку. В нашем примере есть множество вариантов: вы могли бы убрать ванную, извиниться, предложить убраться и в другой части квартиры, договориться, сделать это на следующий день, и так далее.- Используйте свои навыки решения проблем, чтобы придумать возможные варианты решения текущей проблемы.
- Составьте список плюсов и минусов для каждого возможного решения. Например, если вы определили, что одним из возможных вариантов решения вашей проблемы невымытой ванной будет “обязательно убраться в ванной завтра”, то список плюсов и минусов может выглядеть так: плюс – ванная в конечном итоге будет чистой, минусы – сегодня она будет неубранной, завтра я могу забыть об уборке (я не могу полностью гарантировать, что это будет сделано), это не поможет решить проблему того, что я забыл убраться в ванной. Основываясь на этой оценке, было бы лучше навести порядок в ванной в тот же день, а не следующий, если это возможно, и разработать план того, как в будущем не забывать убираться в этой комнате.
-
3
Определитесь с порядком действий и выполняйте их. Чтобы решить проблему, вам нужен план. Определите наилучшее возможное решение, основываясь на прошлом и на возможных вариантах, и будьте привержены его осуществлению.[5]
- Доводите дело до конца. Если вы пообещали исправить проблему, сделайте это. Надежность очень важна в построении доверительных отношений с людьми и формировании прочных связей.[6]
- Доводите дело до конца. Если вы пообещали исправить проблему, сделайте это. Надежность очень важна в построении доверительных отношений с людьми и формировании прочных связей.[6]
-
4
Сформулируйте запасной план. Каким бы надежным ни казался план, существует вероятность того, что он не решит проблему. Например, возможно, вы уберетесь в ванной, но человек, который попросил вас это сделать, все еще будет зол на вас.
- Определите другие возможные решения и запишите их от наиболее полезных до наименее полезных. Пройдитесь по списку сверху донизу. К возможным вариантам могут относиться: предложить убраться в другой комнате, искренне извиниться, спросить человека, как вы можете загладить вину, или предложить ему то, что ему нравится (еду, занятия, и так далее).
-
5
Не допускайте ошибок в будущем. Если вы сможете успешно найти решение вашей ошибки, то вы начинаете процесс успеха в будущем избежании ошибок.[7]
- Запишите, что, по-вашему, вы сделали неправильно. Затем запишите цель того, что вы хотите сделать в будущем. Например, если вы забыли убраться в ванной, у вас могут быть такие цели: записывать список заданий на каждый день, два раза в день проверять его, отмечать галочкой выполненные задания, наклеить на холодильник стикеры с напоминанием для наиболее приоритетных задач.
Реклама
-
1
Не будьте слишком строги к себе. Поймите, что все совершают ошибки, это нормально. Вы можете чувствовать себя виноватым, но необходимо принимать себя таким, какой вы есть, несмотря на свои слабости.[8]
- Простите себя и двигайтесь дальше, вместо того чтобы зацикливаться на своей проблеме.
- Сосредоточьтесь на том, чтобы сейчас и впредь поступать правильно.
-
2
Держите под контролем свои эмоции. Когда мы совершаем ошибку, нас легко могут настигнуть чувства разочарования, подавленности, может возникнуть желание сдаться вообще. Если вы испытываете чрезмерно сильные эмоции или стресс, сделайте перерыв. Повышенные эмоции не принесут вам пользу в попытках исправить свою ошибку.
-
3
Справляйтесь. Сосредоточьтесь на способах борьбы с негативными эмоциями, которые могут заставить вас почувствовать себя лучше. Подумайте о том, как вы справлялись с совершением ошибок в прошлом. Определите способы, которые помогли вам правильно справиться с проблемой, и способы, которые только усугубили ваше состояние.
- К распространенным стратегиям относятся: позитивный внутренний диалог (говорите о себе хорошие вещи), физические упражнения, расслабляющие занятия (например, чтение или игра).
- К вредным и бесполезным стратегиям борьбы с ошибками относится саморазрушающее поведение, например: употребление алкоголя или других веществ, причинение себе физического вреда, повторяющиеся мысли и негативные размышления о себе.
Реклама
-
1
Будьте убедительны. Используйте навыки позитивного взаимодействия, говорите о своих мыслях и чувствах уместным образом и с уважением к собеседнику.[9]
Когда вы утвердительны, вы признаете, что были неправы и берете на себя ответственность за собственную вину. Вы не обвиняете других в своих ошибках.- Не будьте пассивным: не стоит избегать разговоров о своей ошибке, прятаться, соглашаться с тем, чего хотят от вас другие, и не отстаивать себя.
- Не проявляйте агрессии: не повышайте тон, не кричите, не унижайте людей, не проклинайте, не проявляйте насильственного поведения (не бросайтесь вещами, не распускайте руки).
- Избегайте пассивно-агрессивного поведения. Это смешение пассивной и агрессивной форм общения, когда вы можете злиться, но не высказываете своих чувств. Поэтому вы можете сделать что-то у человека за спиной, чтобы отомстить, или устроить бойкот-молчанку. Это не лучшая форма общения, кроме того человек может не понять, о чем вы пытаетесь сообщить ему и почему вы так поступаете.
- Посылайте положительные невербальные сообщения. Наше невербальное общение тоже посылает определенные сообщения людям вокруг нас. Улыбка, например, говорит: “Да, я должен хмуриться, но я могу быть храбрым и пройти через это”.
-
2
Используйте навыки активного слушания. Позвольте расстроенному человеку излить свое разочарование и не торопитесь с ответом.[10]
- Постарайтесь сосредоточиться только на том, чтобы слушать человека, вместо того чтобы думать о том, как ему ответить. Сосредоточьтесь на мыслях и чувствах человека, которого слушаете, а не на своих.
- Сделайте краткие заявления и задайте уточняющие вопросы, например: “Я так понял, что ты был зол и расстроен из-за того, что я не убрался в ванной, правильно?”.
- Сопереживайте. Проявите понимание и поставьте себя на место другого человека.
-
3
Извинитесь. Иногда, когда мы делаем ошибки, мы можем причинить боль другим людям. Извинитесь перед человеком, так вы покажете, что сожалеете о совершенной ошибке, чувствуете вину за причиненный вред и хотите поступать лучше в будущем.[11]
- Не пытайтесь найти оправдания и все объяснить. Просто признайте свой промах. Скажите: “Я признаю, что забыл убраться в ванной. Мне очень жаль ”.
- Будьте осторожны, не обвиняйте других. Не стоит говорить что-то вроде: “Если бы ты напомнил мне, что нужно там убраться, то, может быть, я не забыл бы, и ванная была бы уже чистой”.
-
4
Проявите стремление к позитивным изменениям. Расскажите человеку о способах исправить проблему и пообещайте работать над этим вопросом. Это будет эффективным способом исправить ошибку, которая задела другого человека.
- Постарайтесь разработать решение. Спросите человека, что вы можете для него сделать, чтобы компенсировать ошибку. Можете прямо сказать: “Могу ли я что-то для тебя сделать?”.
- Поймите, как можно поступить по-другому в будущем. Можете спросить у человека: “Как ты думаешь, что может помочь мне избежать этой ошибки в будущем?”.
- Скажите человеку, что вы готовы приложить свои усилия, чтобы снизить вероятность совершения этой ошибки в будущем. Можно сказать следующее: “Я не хочу, чтобы в будущем это произошло снова, поэтому я буду прилагать усилия, чтобы…”. Скажите, что конкретно вы будете делать, например: “Я обязательно составлю список домашних дел, чтобы не забыть об этом снова”.
Реклама
Советы
- Если задание слишком сложное или непреодолимое, сделайте перерыв или попросите о помощи.
- Если вы никак не можете исправить ошибку или улучшить ситуацию прямо сейчас, сосредоточьтесь на том, как поступить лучше в будущем.
Реклама
Предупреждения
- Не пытайтесь исправить ошибку, если это может быть потенциально опасным для вас или кого-то другого. Будьте внимательны к безопасности, здоровью и благополучию, как своему, так и других людей.
Реклама
Об этой статье
Эту страницу просматривали 20 150 раз.
Была ли эта статья полезной?
Искать ошибки в программах — непростая задача. Здесь нет никаких готовых методик или рецептов успеха. Можно даже сказать, что это — искусство. Тем не менее есть общие советы, которые помогут вам при поиске. В статье описаны основные шаги, которые стоит предпринять, если ваша программа работает некорректно.
Шаг 1: Занесите ошибку в трекер
После выполнения всех описанных ниже шагов может так случиться, что вы будете рвать на себе волосы от безысходности, все еще сидя на работе, когда поймете, что:
- Вы забыли какую-то важную деталь об ошибке, например, в чем она заключалась.
- Вы могли делегировать ее кому-то более опытному.
Трекер поможет вам не потерять нить размышлений и о текущей проблеме, и о той, которую вы временно отложили. А если вы работаете в команде, это поможет делегировать исправление коллеге и держать все обсуждение в одном месте.
Вы должны записать в трекер следующую информацию:
- Что делал пользователь.
- Что он ожидал увидеть.
- Что случилось на самом деле.
Это должно подсказать, как воспроизвести ошибку. Если вы не сможете воспроизвести ее в любое время, ваши шансы исправить ошибку стремятся к нулю.
Шаг 2: Поищите сообщение об ошибке в сети
Если у вас есть сообщение об ошибке, то вам повезло. Или оно будет достаточно информативным, чтобы вы поняли, где и в чем заключается ошибка, или у вас будет готовый запрос для поиска в сети. Не повезло? Тогда переходите к следующему шагу.
Шаг 3: Найдите строку, в которой проявляется ошибка
Если ошибка вызывает падение программы, попробуйте запустить её в IDE под отладчиком и посмотрите, на какой строчке кода она остановится. Совершенно необязательно, что ошибка будет именно в этой строке (см. следующий шаг), но, по крайней мере, это может дать вам информацию о природе бага.
Шаг 4: Найдите точную строку, в которой появилась ошибка
Как только вы найдете строку, в которой проявляется ошибка, вы можете пройти назад по коду, чтобы найти, где она содержится. Иногда это может быть одна и та же строка. Но чаще всего вы обнаружите, что строка, на которой упала программа, ни при чем, а причина ошибки — в неправильных данных, которые появились ранее.
Если вы отслеживаете выполнение программы в отладчике, то вы можете пройтись назад по стектрейсу, чтобы найти ошибку. Если вы находитесь внутри функции, вызванной внутри другой функции, вызванной внутри другой функции, то стектрейс покажет список функций до самой точки входа в программу (функции main()
). Если ошибка случилась где-то в подключаемой библиотеке, предположите, что ошибка все-таки в вашей программе — это случается гораздо чаще. Найдите по стектрейсу, откуда в вашем коде вызывается библиотечная функция, и продолжайте искать.
Шаг 5: Выясните природу ошибки
Ошибки могут проявлять себя по-разному, но большинство из них можно отнести к той или иной категории. Вот наиболее частые.
- Ошибка на единицу
Вы начали циклfor
с единицы вместо нуля или наоборот. Или, например, подумали, что метод.count()
или.length()
вернул индекс последнего элемента. Проверьте документацию к языку, чтобы убедиться, что нумерация массивов начинается с нуля или с единицы. Эта ошибка иногда проявляется в виде исключенияIndex out of range
. - Состояние гонки
Ваш процесс или поток пытается использовать результат выполнения дочернего до того, как тот завершил свою работу. Ищите использованиеsleep()
в коде. Возможно, на мощной машине дочерний поток выполняется за миллисекунду, а на менее производительной системе происходят задержки. Используйте правильные способы синхронизации многопоточного кода: мьютексы, семафоры, события и т. д. - Неправильные настройки или константы
Проверьте ваши конфигурационные файлы и константы. Я однажды потратил ужасные 16 часов, пытаясь понять, почему корзина на сайте с покупками виснет на стадии отправки заказа. Причина оказалась в неправильном значении в/etc/hosts
, которое не позволяло приложению найти ip-адрес почтового сервера, что вызывало бесконечный цикл в попытке отправить счет заказчику. - Неожиданный null
Бьюсь об заклад, вы не раз получали ошибку с неинициализированной переменной. Убедитесь, что вы проверяете ссылки наnull
, особенно при обращении к свойствам по цепочке. Также проверьте случаи, когда возвращаемое из базы данных значениеNULL
представлено особым типом. - Некорректные входные данные
Вы проверяете вводимые данные? Вы точно не пытаетесь провести арифметические операции с введенными пользователем строками? - Присваивание вместо сравнения
Убедитесь, что вы не написали=
вместо==
, особенно в C-подобных языках. - Ошибка округления
Это случается, когда вы используете целое вместоDecimal
, илиfloat
для денежных сумм, или слишком короткое целое (например, пытаетесь записать число большее, чем 2147483647, в 32-битное целое). Кроме того, может случиться так, что ошибка округления проявляется не сразу, а накапливается со временем (т. н. Эффект бабочки). - Переполнение буфера и выход за пределы массива
Проблема номер один в компьютерной безопасности. Вы выделяете память меньшего объема, чем записываемые туда данные. Или пытаетесь обратиться к элементу за пределами массива. - Программисты не умеют считать
Вы используете некорректную формулу. Проверьте, что вы не используете целочисленное деление вместо взятия остатка, или знаете, как перевести рациональную дробь в десятичную и т. д. - Конкатенация строки и числа
Вы ожидаете конкатенации двух строк, но одно из значений — число, и компилятор пытается произвести арифметические вычисления. Попробуйте явно приводить каждое значение к строке. - 33 символа в varchar(32)
Проверяйте данные, передаваемые вINSERT
, на совпадение типов. Некоторые БД выбрасывают исключения (как и должны делать), некоторые просто обрезают строку (как MySQL). Недавно я столкнулся с такой ошибкой: программист забыл убрать кавычки из строки перед вставкой в базу данных, и длина строки превысила допустимую как раз на два символа. На поиск бага ушло много времени, потому что заметить две маленькие кавычки было сложно. - Некорректное состояние
Вы пытаетесь выполнить запрос при закрытом соединении или пытаетесь вставить запись в таблицу прежде, чем обновили таблицы, от которых она зависит. - Особенности вашей системы, которых нет у пользователя
Например: в тестовой БД между ID заказа и адресом отношение 1:1, и вы программировали, исходя из этого предположения. Но в работе выясняется, что заказы могут отправляться на один и тот же адрес, и, таким образом, у вас отношение 1:многим.
Если ваша ошибка не похожа на описанные выше, или вы не можете найти строку, в которой она появилась, переходите к следующему шагу.
Шаг 6: Метод исключения
Если вы не можете найти строку с ошибкой, попробуйте или отключать (комментировать) блоки кода до тех пор, пока ошибка не пропадет, или, используя фреймворк для юнит-тестов, изолируйте отдельные методы и вызывайте их с теми же параметрами, что и в реальном коде.
Попробуйте отключать компоненты системы один за другим, пока не найдете минимальную конфигурацию, которая будет работать. Затем подключайте их обратно по одному, пока ошибка не вернется. Таким образом вы вернетесь на шаг 3.
Шаг 7: Логгируйте все подряд и анализируйте журнал
Пройдитесь по каждому модулю или компоненту и добавьте больше сообщений. Начинайте постепенно, по одному модулю. Анализируйте лог до тех пор, пока не проявится неисправность. Если этого не случилось, добавьте еще сообщений.
Ваша задача состоит в том, чтобы вернуться к шагу 3, обнаружив, где проявляется ошибка. Также это именно тот случай, когда стоит использовать сторонние библиотеки для более тщательного логгирования.
Шаг 8: Исключите влияние железа или платформы
Замените оперативную память, жесткие диски, поменяйте сервер или рабочую станцию. Установите обновления, удалите обновления. Если ошибка пропадет, то причиной было железо, ОС или среда. Вы можете по желанию попробовать этот шаг раньше, так как неполадки в железе часто маскируют ошибки в ПО.
Если ваша программа работает по сети, проверьте свитч, замените кабель или запустите программу в другой сети.
Ради интереса, переключите кабель питания в другую розетку или к другому ИБП. Безумно? Почему бы не попробовать?
Если у вас возникает одна и та же ошибка вне зависимости от среды, то она в вашем коде.
Шаг 9: Обратите внимание на совпадения
- Ошибка появляется всегда в одно и то же время? Проверьте задачи, выполняющиеся по расписанию.
- Ошибка всегда проявляется вместе с чем-то еще, насколько абсурдной ни была бы эта связь? Обращайте внимание на каждую деталь. На каждую. Например, проявляется ли ошибка, когда включен кондиционер? Возможно, из-за этого падает напряжение в сети, что вызывает странные эффекты в железе.
- Есть ли что-то общее у пользователей программы, даже не связанное с ПО? Например, географическое положение (так был найден легендарный баг с письмом за 500 миль).
- Ошибка проявляется, когда другой процесс забирает достаточно большое количество памяти или ресурсов процессора? (Я однажды нашел в этом причину раздражающей проблемы «no trusted connection» с SQL-сервером).
Шаг 10: Обратитесь в техподдержку
Наконец, пора попросить помощи у того, кто знает больше, чем вы. Для этого у вас должно быть хотя бы примерное понимание того, где находится ошибка — в железе, базе данных, компиляторе. Прежде чем писать письмо разработчикам, попробуйте задать вопрос на профильном форуме.
Ошибки есть в операционных системах, компиляторах, фреймворках и библиотеках, и ваша программа может быть действительно корректна. Но шансы привлечь внимание разработчика к этим ошибкам невелики, если вы не сможете предоставить подробный алгоритм их воспроизведения. Дружелюбный разработчик может помочь вам в этом, но чаще всего, если проблему сложно воспроизвести вас просто проигнорируют. К сожалению, это значит, что нужно приложить больше усилий при составлении багрепорта.
Полезные советы (когда ничего не помогает)
- Позовите кого-нибудь еще.
Попросите коллегу поискать ошибку вместе с вами. Возможно, он заметит что-то, что вы упустили. Это можно сделать на любом этапе. - Внимательно просмотрите код.
Я часто нахожу ошибку, просто спокойно просматривая код с начала и прокручивая его в голове. - Рассмотрите случаи, когда код работает, и сравните их с неработающими.
Недавно я обнаружил ошибку, заключавшуюся в том, что когда вводимые данные в XML-формате содержали строкуxsi:type='xs:string'
, все ломалось, но если этой строки не было, все работало корректно. Оказалось, что дополнительный атрибут ломал механизм десериализации. - Идите спать.
Не бойтесь идти домой до того, как исправите ошибку. Ваши способности обратно пропорциональны вашей усталости. Вы просто потратите время и измотаете себя. - Сделайте творческий перерыв.
Творческий перерыв — это когда вы отвлекаетесь от задачи и переключаете внимание на другие вещи. Вы, возможно, замечали, что лучшие идеи приходят в голову в душе или по пути домой. Смена контекста иногда помогает. Сходите пообедать, посмотрите фильм, полистайте интернет или займитесь другой проблемой. - Закройте глаза на некоторые симптомы и сообщения и попробуйте сначала.
Некоторые баги могут влиять друг на друга. Драйвер для dial-up соединения в Windows 95 мог сообщать, что канал занят, при том что вы могли отчетливо слышать звук соединяющегося модема. Если вам приходится держать в голове слишком много симптомов, попробуйте сконцентрироваться только на одном. Исправьте или найдите его причину и переходите к следующему. - Поиграйте в доктора Хауса (только без Викодина).
Соберите всех коллег, ходите по кабинету с тростью, пишите симптомы на доске и бросайте язвительные комментарии. Раз это работает в сериалах, почему бы не попробовать?
Что вам точно не поможет
- Паника
Не надо сразу палить из пушки по воробьям. Некоторые менеджеры начинают паниковать и сразу откатываться, перезагружать сервера и т. п. в надежде, что что-нибудь из этого исправит проблему. Это никогда не работает. Кроме того, это создает еще больше хаоса и увеличивает время, необходимое для поиска ошибки. Делайте только один шаг за раз. Изучите результат. Обдумайте его, а затем переходите к следующей гипотезе. - «Хелп, плиииз!»
Когда вы обращаетесь на форум за советом, вы как минимум должны уже выполнить шаг 3. Никто не захочет или не сможет вам помочь, если вы не предоставите подробное описание проблемы, включая информацию об ОС, железе и участок проблемного кода. Создавайте тему только тогда, когда можете все подробно описать, и придумайте информативное название для нее. - Переход на личности
Если вы думаете, что в ошибке виноват кто-то другой, постарайтесь по крайней мере говорить с ним вежливо. Оскорбления, крики и паника не помогут человеку решить проблему. Даже если у вас в команде не в почете демократия, крики и применение грубой силы не заставят исправления магическим образом появиться.
Ошибка, которую я недавно исправил
Это была загадочная проблема с дублирующимися именами генерируемых файлов. Дальнейшая проверка показала, что у файлов различное содержание. Это было странно, поскольку имена файлов включали дату и время создания в формате yyMMddhhmmss
. Шаг 9, совпадения: первый файл был создан в полпятого утра, дубликат генерировался в полпятого вечера того же дня. Совпадение? Нет, поскольку hh
в строке формата — это 12-часовой формат времени. Вот оно что! Поменял формат на yyMMddHHmmss
, и ошибка исчезла.
Перевод статьи «How to fix bugs, step by step»
Если при любом сбое компьютера ваша рука автоматически тянется к телефону, чтобы вызвать мастера, прочитайте эту статью. Из неё вы узнаете о нескольких имеющихся в Windows бесплатных утилитах, с помощью которых можно легко найти причину неисправности и даже самому устранить её.
Поиск и устранение проблем
Этот раздел должен быть первым местом, которое вы посетите при возникновении каких-либо неисправностей. Найти его можно по адресу «Панель управления» → «Устранение неполадок».
Здесь вас ждут несколько пошаговых мастеров, которые помогут решить проблемы с подключением принтера, воспроизведением звука, доступом к интернету и так далее.
Вполне может быть, что ваша проблема не представляет собой ничего сложного, а потому вполне по силам этому встроенному ремонтнику.
Оптимизация дисков
Современные жёсткие диски обычно не требуют столь частого обслуживания, как в прошлые десятилетия. К тому же новые версии Windows научились выполнять оптимизацию дисков по расписанию и в минуты простоя. И тем не менее, если вы стали замечать замедление работы компьютера или странные звуки, исходящие от накопителя, нелишним будет запустить утилиту обслуживания дисков.
Легче всего сделать это, выполнив поиск по названию. С помощью утилиты вы сможете проанализировать состояние накопителей, оптимизировать их или изменить расписание автоматического обслуживания.
Откат системы к предыдущему состоянию
Отличная функция, о которой многие пользователи почему-то забывают. Она может пригодиться в том случае, если у вас появились какие-либо ошибки и сбои после установки новых программ или обновления драйверов. С помощью восстановления системы можно будет вернуть компьютер к тому времени, когда всё работало.
Иногда восстановление приводит к частичной потере пользовательских данных, появившихся в последнее время. Поэтому, прежде чем приступать к лечению, лучше сделать резервные копии. И всё же откат к предыдущей контрольной точке — это простой и быстрый способ решения многих проблем.
Монитор стабильности системы
Чтобы что-то починить, нужно понять, что поломалось. Получить ответ на этот вопрос вам поможет утилита «Монитор стабильности системы». Найти её не так уж просто, так как запрятана она в глубинах «Панели управления». Поэтому легче всего воспользоваться поиском, куда следует ввести словосочетание «журнал надёжности».
Здесь вы найдёте подробный отчёт о работе операционной системы и установленного программного обеспечения, а также возникающих при этом сбоях. Иногда одного взгляда на журнал достаточно, чтобы определить причину проблем и устранить её.
Восстановление системы
Если перечисленные выше методы не сработали, можно попробовать более радикальное средство. Для этого нужно воспользоваться имеющейся в последних версиях Windows функцией возврата к исходному состоянию. Она имеет несколько вариантов: самый щадящий позволяет даже сохранить все пользовательские данные, в то время как другой вернёт компьютер к моменту покупки.
Для доступа к этой функции откройте «Параметры компьютера», а затем перейдите в раздел «Обновление и безопасность». Здесь найдите на левой панели вкладку «Восстановление». В зависимости от того, какая система была установлена первоначально и какие были применены обновления, состав пунктов может несколько отличаться.
Диагностика оперативной памяти
Довольно часто проблемы связаны с ошибками оперативной памяти. Особенное коварство этого случая заключается в том, что баги начинают возникать без всякой системы. Поэтому, если вас замучили внезапные перезагрузки, синие экраны и незапускающиеся программы, обязательно проверьте состояние оперативной памяти.
Найти эту полезную утилиту поможет поиск по словам «диагностика памяти». После запуска выберите подходящий вам режим проверки и дождитесь результатов теста.
Монитор ресурсов
Ещё один замечательный инструмент, позволяющий узнать, что творится под капотом Windows, называется «Монитор ресурсов». Он пригодится вам, например, в том случае, если какой-либо процесс начнёт вести себя неподобающим образом, слишком нагружая процессор или беспрестанно записывая что-то на диск. Разумеется, это вызовет замедление работы компьютера, поэтому нарушителя необходимо быстро найти и обезвредить.
«Монитор ресурсов» является старшим братом хорошо знакомого вам «Диспетчера задач». Он предоставляет самую полную информацию о каждом процессе, службе, драйвере, сетевых соединениях и использовании ими процессора, памяти, жёсткого диска.
Ну что, всё перепробовали, но Windows так и не вылечили? Тогда действительно стоит взять телефон и вызвать знакомого «компьютерщика».
Можете предложить ещё варианты спасения системы? В этом случае добро пожаловать в комментарии!
Для большинства встроенных инструментов от Microsoft вам понадобится открыть командную строку с правами администратора. В Windows 10 проще всего это сделать правым кликом по кнопке «Пуск» и выбором пункта «Командная строка (Администратор)».
В Windows 7 вызовите «Пуск | Все программы | Стандартные», а затем правой кнопкой мыши щелкните по пункту «Командная строка». Из меню выберите «Запустить от имени администратора».
Полная перезагрузка Windows
Последние версии Windows при завершении работы сохраняют часть актуальных параметров в буфере обмена, чтобы ускорить последующую загрузку. Вследствие этого некоторые ошибки могут появиться вновь даже после перезапуска системы.
С помощью простой команды вы проведете полную перезагрузку, чтобы по возможности освободить ОС от накопившихся проблем. Нажмите на клавиши «Win+R» и введите «shutdown -g -t 0». Параметр «-g» обеспечивает полноценную перезагрузку. Второй параметр, «-t 0», выполняет ее быстро, избавляя вас от лишних запросов.
Сканирование жесткого диска на наличие ошибок
Встроенный в Windows инструмент Chkdsk проверяет жесткий диск и исправляет поврежденные сектора. Для его запуска откройте окно командной строки с правами администратора и введите там «chkdsk C: /f /r». Параметр «C:» отвечает за то, чтобы утилита проверяла раздел «C:», в то время как «f» и «/r» служат для поиска и исправления некорректных секторов.
Если существует еще какой-то процесс, обращающийся к сканируемому разделу, что случается довольно часто, утилита Chkdsk предложит провести проверку сразу после следующего запуска компьютера.
Поиск ошибок в журнале загрузки
При постоянных сбоях Windows во время запуска причину можно поискать в поврежденном драйвере. Вопрос только, в каком именно? Для выяснения активируйте функцию «Ведение журнала загрузки». В Windows 7 вы найдете его в «Дополнительных вариантах загрузки», которые вызываются клавишей «F8» в процессе запуска системы.
В «десятке» выберите «Пуск | Параметры | Обновление и безопасность | Восстановление» и под строкой «Особые варианты загрузки» нажмите на кнопку «Перезагрузить сейчас». После этого последовательно выберите в меню восстановления «Диагностика | Дополнительные параметры | Параметры загрузки | Перезагрузить».
Запустите ведение журнала загрузки нажатием на клавишу «2». Перезагрузите Windows (при необходимости в безопасном режиме) и в Проводнике Windows откройте файл «Ntbtlog.txt», который вы найдете в папке «C:Windows». Драйвер, ответственный за сбой, как правило, располагается последним в списке. В поисковом сервисе Google найдите дополнительную информацию об этом драйвере и на основании этого либо удалите, либо обновите его.
Восстановление поврежденных системных файлов
Повреждение системных файлов может быть вызвано, в числе прочего, некорректным завершением работы Windows. Инструмент Sfc проверяет наличие таких элементов и при необходимости заменяет их сохраненной на локальном диске копией.
Для того чтобы воспользоваться Sfc, откройте окно командной строки с правами администратора и введите «sfc /scannow». Анализ займет несколько минут. По его завершении перезагрузите компьютер и выполните необходимое обновление компьютера.
Проверка хранилища компонентов
Sfc обращается к хранилищу компонентов. В нем Windows хранит копии системных файлов, чтобы в случае повреждений оригиналов запустить их оттуда. Однако ошибки могут закрасться и в копии. В таком случае откройте окно командной строки с правами администратора и введите там «dism /Online /Cleanup-Image/RestoreHealth», чтобы восстановить хранилище компонентов. После этого еще раз выполните команду «sfc /scannow».
Обновление поврежденных драйверов
Бывают ситуации, когда проблемы возникают после обновления драйвера. В таких случаях вы можете вернуться к предыдущей версии: нажмите на «Win+Pause» и в левом верхнем углу кликните по «Диспетчеру устройств».
В списке найдите оборудование, драйвер которого повинен в проблемах, и щелкните по нему правой кнопкой мыши. Выберите «Свойства» и перейдите к вкладке «Драйвер». Нажмите на кнопку «Откатить», чтобы вернуть прежнюю версию.
Вызов предыдущих конфигураций Windows
Если в Windows 7 при загрузке нажать на клавишу «F8», можно загрузить последнюю функционирующую конфигурацию. В Windows 10 такая опция исчезла, но ее можно вернуть. Сначала в командной строке, открытой с правами администратора, введите команду «bcdedit /set {default} bootmenupolicy legacy». Теперь нажмите на комбинацию «Win+R» и введите «regedit».
Перейдите к записи «LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerConfiguration Manager» и в ней создайте раздел «LastKnownGood». В нем создайте параметр DWORD под названием «Enabled» и переведите его значение на «1». Теперь в разделе «ConfigurationManager» создайте параметр DWORD с названием «BackupCount» и задайте для него значение «2».
Полностью перезагрузите компьютер, чтобы активировать данную функцию. Теперь при нажатии на клавишу «F8» вы также сможете выбрать более раннюю, функционирующую конфигурацию.
Коды ошибок для Windows 10
При обновлении или установке Windows 10 могут возникнуть ошибки, отображаемые операционной системой лишь в виде зашифрованных кодов. Мы покажем вам, что скрывается за ними.
0xC1900101 | Чаще всего речь идет об ошибке драйвера. Запустите Центр обновления несколько раз и обновите все установленные драйверы |
0x80073712 | Поврежден или удален один из необходимых Центру обновления Windows файл |
0xC1900208 | Обновление блокируется каким-то несовместимым приложением |
0x80070070 | На компьютере недостаточно места для обновления |
0x800F0922 | Отсутствует интернет-соединение с серверами Microsoft |
0xC1900200 | Компьютер не удовлетворяет требованиям перехода на Windows 10 |
Дополнительную информацию по определенным кодам ошибок вы найдете на странице https://goo.gl/ZnsY6N
Проверка оперативной памяти
Причиной повторяющихся сбоев Windows могут стать проблемы с оперативной памятью. Вместо того чтобы сразу бежать в магазин за новой, сначала проведите диагностику средствами системы.
В «семерке» и «десятке» нажмите на клавишу «Windows» и введите слово «памяти». Выберите вариант «Средство проверки памяти Windows». Закройте все открытые файлы и перезагрузите компьютер, кликнув по «Выполнить перезагрузку и проверку (рекомендуется)». После перезагрузки автоматически запустится тестирование оперативной памяти. Нажмите на «F1», чтобы активировать дополнительные проверки. С помощью кнопки «Стрелка вниз» на клавиатуре дойдите до опции «Extended» и нажмите на «F10», чтобы применить изменения.
Такой способ тестирования оперативной памяти считается самым точным, однако он имеет один важный минус: в процессе тестирования и анализа вы не сможете параллельно работать на ПК.
По завершении всех тестов Windows запустится в обычном режиме и отобразит результаты. Если средство проверки обнаружило ошибки, оперативную память придется заменить.
Читайте также наш практикум: Как починить Windows, если она не загружается
Фото: компании-производители, ShutterStock/Fotodom.ru