Как найти ошибки в кодах игр

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

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

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

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

Что такое баги в игре и как они классифицируются

Баги в игре — это то, что довольно часто можно встретить как в новых играх, так и в старых. И чтобы хоть немного ими управлять и контролировать, нужно их классифицировать. 

Как классифицируют игровые баги:

  1. Функциональный баг. Когда не работоспособны различные функции в игре. Например, когда при смене локации или каких-то настроек выбрасывает из игры.

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

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

  4. Баг производительности. Игровые проблемы с FPS, не связанные с пользователем, игра работает медленно и лагает на производительных устройствах.

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

  6. Технический баг. Нестабильный интернет, отчего игра плохо работает. Или, например, не хочет запускаться в 3Gсети.

  7. Баг совместимости. К примеру, игра не запускается на совместимых устройствах.

Но это еще не все. Это была классификация по происхождению бага. Еще они классифицируются по приоритетности и скорости их устранения. В этом случае выделяют три категории:

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

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

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

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

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

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

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

Что такое баги в игре разобрались, и как их классифицируют тоже. Остается вопрос: а как вообще появляются эти «недостатки» и от чего зависит их количество в проектах?

От чего зависит количество багов в играх

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

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

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

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

  3. Игровой процесс. Чем сложнее процесс и больше функциональности в игре, тем больше шансов, что при их реализации возникнут ошибки в игре.

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

  5. Раннее тестирование. Один баг часто порождает целую цепочку багов, поэтому необходимо качественное тестирование на ранних этапах разработки.

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

  1. Сетевой режим RPG-игр. Огромный игровой мир с просто невероятным количеством возможных сценариев при взаимодействии игроков между собой.

  2. Открытый мир в игре. Поведение игроков практически неограничено, а значит, и возможных сценариев огромное количество. И трудно предугадать, куда занесет очередного игрока его полет творчества.

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

Как искать и находить баги в играх

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

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

Как искать и находить баги в играх, советы:

  1. Фокусировка. Важно фокусироваться именно на процессе поиска, а не на процессе игры. Можно даже держать постоянно в голове мысль: «Здесь должен быть баг!»

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

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

По опыту работы с начинающими разработчиками, я сталкиваюсь с тем, что поиск ошибок порой занимает слишком много времени. Не из-за того, что они глупее более опытных товарищей или не разбираются в процессах, а из-за отсутствия понимания с чего начать и на чём акцентировать внимание. В статье я собрал общие советы о том где обитают ошибки и как найти причину их возникновения. Примеры в статье даны на 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. Если не удается локализовать причину ошибки, применяем метод Бинарного поиска.

Unarc.dll вернул код ошибки -1,6,7,11,12 при установлении игры как исправить

При установке какой-либо программы (обычно это игровой репак) пользователь может столкнуться с ошибкой её распаковки и соответствующим сообщением «Unarc.dll вернул код ошибки», после которого следует номер самой ошибки (наиболее часто — 1,6,7,11,12). Повторная установка проблемного репака также заканчивается ничем, вынуждая пользователя искать в сети инструменты для решения указанной проблемы. В данном материале я постараюсь помочь таким пользователям и расскажу что делать, если Unarc.dll вернул код ошибки -1,6,7,11,12 при установлении игры, каковы причины данной дисфункции и что делать в данной ситуации.

ISDone.dll — Произошла ошибка при распаковке

Суть и причины дисфункции «Unarc.dll вернул код ошибки»

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

Соответственно, уже упомянутый текст «Unarc.dll вернул код ошибки» возникает в условиях, когда корректно распаковать эти самые архивы не представляется возможным (контрольная сумма архива, представленная в параметре CRC, не совпадает с фактической). Это связано как с повреждением самого архива, так и с использованием довольно неординарных методов упаковки с применением новейших архиваторов. В таком случае обычные или устаревшие архиваторы не справляются с распаковкой проблемного архива, выдавая сообщение об ошибке «Unarc.dll вернул код ошибки» -1,6,7,11,12.

Причины ошибки «Unarc.dll вернул код ошибки» также могут быть следующими:

  • В пути установке игры на жёстком диске использованы кириллические символы;
  • Антивирус заблокировал установку каких-либо из компонентов репака;
  • В повреждении архива виноваты вирусные программы;
  • Небольшой файл подкачки;
  • Проблемы в работе планок оперативной памяти.

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

Как избавиться от Unarc.dll вернул код ошибки -1,6,7,11,12 при установке игры

Итак, если вы столкнулись с проблемой Unarc.dll вернул код ошибки, тогда рекомендую выполнить следующее:

  1. Запускайте инсталлятор от имени администратора (кликните правой клавишей мыши на требуемый файл и выберите «Запуск от имени администратора»);
  2. Если вы скачивали игру с торрент-трекера, то попробуйте пересчитать хеш скачанной программы (находясь в торрент-клиенте кликните правой клавишей мыши на проблемной программе и выберите «Пересчитать хеш»);

Выполняем пересчитку хеша

  • Попробуйте отключить ваш антивирус не только при установке самой программы, но и при её загрузке (есть вероятность, что ваш антивирус удаляет подозрительные компоненты репака при его загрузке «на ходу»). Также отключите Защитник Виндовс и SmartScreen (при наличии);
  • Убедитесь, что в использованном пути установки игры нет кириллических символов, при необходимости установите игру в другое место с путём, полностью прописанным латиницей. Также можно попробовать переписать файл инсталлятора на флешку, и устанавливать игру уже с неё (это давало неплохие результаты);
  • Установите самую свежую версию архиватора WinRAR и WinZip. При этом наиболее эффективным в этом плане оказалась установка свежей версии архиватора 7-Zip – последний показал отличные результаты в исправлении дисфункции «Unarc.dll вернул код ошибки»;
  • Увеличьте размер файла подкачки. Нажмите кнопку «Пуск», в строке поиска введите sysdm.cpl и нажмите ввод, в открывшимся окне перейдите во вкладку «Дополнительно», кликните на кнопку «Параметры». Там вновь перейдите во вкладку «Дополнительно» и внизу, в параметрах файла подкачки нажмите на кнопку «Изменить». Снимите галочку с автоматического выбора файла подкачки, и укажите максимальный размер последнего (обычно он равен объёму оперативной памяти);

Указываем размер файла подкачки

  • Попробуйте запустить установщик программы в режиме совместимости с Win XP (также можете попробовать другие ОС), у некоторых пользователей это дало нужный результат;
  • Попробуйте поискать и скачать другой репак нужной вам игры (диверсифицируйте источники, присмотритесь к альтернативным торрент-трекерам и так далее);
  • Стоит также попробовать использовать функционал программыDll Suite, которая находит и исправляет ошибки, связанные с библиотеками dll;
    • Нужно проверить на работоспособность планки своей оперативной памяти. Для этого рекомендую использовать соответствующие программы (уровня MemTest). Также можете изъять ваши планки памяти из компьютера, и, включая их по одной, (и меняя) уяснить, какая из них работает нестабильно (или вообще неработоспособна).

    Unarc.dll вернул код ошибки 1, 6, 7, 8, 11, 12, 14 — как исправить все!

    Многие геймеры не раз сталкивались со сбоем Unarc.dll вернул код ошибки при установке игры или программы. При этом код ошибки появляется с различными значениями, чаще всего встречаются значения 1, 6, 7, 8, 11, 12, 14. В этом гайде будет предоставлена вся информация по тому как исправить Unarc.dll вернул код ошибки 1, 6, 7, 8, 11, 12, 14 и т.д.

    Как исправить Unarc.dll вернул код ошибки 11

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

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

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

    Как правило именно из-за этих причин и появляется сбой «Unarc.dll вернул код ошибки».

    Переустановка Microsoft Visual C++ 2010

    Также исправить ошибку поможет пакет Microsoft Visual C++ 2010. Вот две ссылки на официальный продукт microsoft. Перед тем как устанавливать удостоверьтесь какая разрядность вашей операционной системы.

    Перед установкой желательно удалить предыдущую версию Microsoft Visual C++. Для этого идем в «Панель управления» – «Программы и компоненты» и удаляем пакет C++.

    Уберите русские буквы с пути

    Русские буквы или кириллица всегда конфликтует со многими утилитами. Иностранные программы не могут распознать в своем установочном пути такие символы. Поэтому исправьте имя папки, в которую собираетесь устанавливать игру. К примеру, если папка именуется Скайрим, то меняете на Skyrim.

    Восстановление системных файлов Windows

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

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

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

    Перезагружаете компьютер и также пробуете запустить проблемное приложение.

    Как исправить Unarc.dll вернул код ошибки 1, 2, 3, 6, 7

    Код ошибки 1, 2, 3, 5, 7 и так далее также может появиться из-за забитого жесткого диска (памяти компьютера). Освободите память для распаковки игры, и не забывайте что распакованные файлы занимают больше памяти чем находясь в архиве.

    Как исправить ошибку при распаковке unarc.dll

    При распаковке игры у вас может высветится следующее сообщение: «Ошибка при распаковке unarc.dll». Причиной в данном случае является распаковщик. Чтобы исправить данную ошибку нужно:

    1. Установить сразу два или три архиватора, самыми лучшими являются WinRar, WinZip, 7-Z.
    2. Поочередно попробовать открыть запакованную игру каждым из них.

    Решение: Unarc dll вернул код ошибки

    Unarc.dll вернул код ошибки. Очень часто ошибка возникает на этапе распаковки архива во время установки игр или программ. Unarc.dll – это библиотека архиватора. Поэтому перед всеми остальными действиями рекомендуем установить самую последнюю версию архиваторов WinRAR или 7Zip.

    Unarc.dll вернул код ошибки -1

    Полный текст ошибки: ERROR: archive data corrupted (decompression files)

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

    1. Проверьте, все ли файлы были докачаны. Если вы скачивали торентом, попробуйте пересчитать или обновить хэш. Хеш предназначен для проверки целостности файлов. Для этого кликните на закачку правой кнопкой и нажмите “Пересчитать хэш”.
    2. Убедитесь, что вы используете последнюю версию архиваторов WinRAR или 7Zip.
      Скачать последние версии можно тут:
      win-rar.com
      7-zip.org
    3. Кроме того, блокировать распаковку может защитник Windows или антивирус. Попробуйте отключить их на время и запустить установку от имени администратора.
    4. Так же проверьте путь к файлу, необходимо чтобы путь не содержал в названии русских букв.
    5. Так же проблема может быть из-за того, что имя пользователя написано русскими буквами. И в итоге временный каталог для распаковки содержит русские символы, к примеру: C:UsersДмитрийAppDataLocalTemp. Для решения проблемы необходимо изменить расположение временного каталога на другое.
      В полях TEMP и TMP установите значение C:Temp . Таким образом временный каталог будет доступен в корне диска C:.
    6. Если вы устанавливаете программу с внешнего накопителя, попробуйте скинуть файлы на компьютер, и уже с компьютера запустить установку. Вероятно, внешний накопитель работает не стабильно.

    Unarc.dll вернул код ошибки -2 и -3

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

    В первую очередь устанавливайте последние версии архиваторов WinRAR или 7Zip. Выше есть ссылки на официальные сайты. Далее попробуйте:

    1. Вероятно оперативная память компьютера работает со сбоями. Проверьте стабильность работы с помощью специальных утилит. Одна из таких утилит уже есть в Windows. Введите в поисковую строку в меню компьютера “Диагностика проблем оперативной памяти компьютера” или выполните команду “mdsched” В появившемся окне нужный вам режим проверки. Подробнее читайте в статье: Как проверить оперативную память на ошибки?
    2. Убедитесь, что в названии папки, в которую происходит установка, не содержится русских букв

    Unarc.dll вернул код ошибки -4

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

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

    Подробнее читайте в статье по ссылке

    Unarc.dll вернул код ошибки -5

    Ошибка с кодом пять связана с нехваткой памяти при распаковке. Освободите место на жестком диске для продолжения установки. Обратите внимание на минимальные системные требования в отношении места на HDD, плюс еще необходимо место для временной распаковки, приблизительно +50%, а в идеале +100%. К примеру, если игра требует 5Гб места на жестком диске, для установки необходимо иметь как миниум 7,5Гб свободного места.

    Unarc.dll вернул код ошибки -6

    Полный текст: ERROR: can’t open file C:Program FilesSkyrimdata1.bin

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

    После проверки жесткого диска повторите установку снова.

    Unarc.dll вернул код ошибки -7

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

    1. Проверьте, все ли файлы были докачаны. Если вы скачивали торентом, попробуйте пересчитать или обновить хэш. Хеш предназначен для проверки целостности файлов. Для этого кликните на закачку правой кнопкой и нажмите “Пересчитать хэш”.
    2. Убедитесь, что вы используете последнюю версию архиваторов WinRAR или 7Zip.
      Скачать последние версии можно тут:
      win-rar.com
      7-zip.org

    Unarc.dll вернул код ошибки -8

    Полный текст: Произошла ошибка при распаковке: Необходимые функции не поддерживаются библиотекой!

    Ошибка связана с архиватором. Необходимо установить последнюю версию. Скачать последние версии можно тут:
    win-rar.com
    7-zip.org

    Unarc.dll вернул код ошибки -11

    Полный текст: Невозможно записать данные на диск. ERROR: file write operation failed

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

    Так же ошибка может быть связана с недостаточным объемом файла подкачки. Необходимо в настройках файла подкачки указать автоматически подбирать объем.
    Для этого выполните команду sysdm.cpl. Пуск — Выполнить, введите sysdm.cpl и нажмите ОК.
    В появившемся окне перейдите во вкладку Дополнительно — затем «Параметры»
    Следующий шаг: Дополнительно — Изменить.
    В появившемся окне поставить галочку «Автоматически выбирать объем файла подкачки», затем ОК.

    Так же проблема может быть из-за того, что имя пользователя написано русскими буквами. И в итоге временный каталог для распаковки содержит русские символы, к примеру: C:UsersЕвгенийAppDataLocalTemp
    Для решения проблемы необходимо изменить расположение временного каталога на другое. Как это сделать смотрите в первом пункте

    Unarc.dll вернул код ошибки -12

    Полный текст ошибки: ERROR: file C:Program FilesGTAdata1.bin failed CRC check

    Проблема возникла из-за неправильной архивации. Чаще всего проблема возникает при установке репаков или модов. Установите другую версию.

    Unarc.dll вернул код ошибки -13

    Полный текст ошибки: ERROR: wrong password

    1. Пароль к архиву не указан или указан не верно
    2. Если игра пиратская, убедитесь что в папке с установочным файлом присутствует кряк или таблетка

    Unarc.dll вернул код ошибки -14

    Полный текст ошибки: ERROR: this is not FreeArc archive or this archive is corrupt

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

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

    Как исправить «Unarc.dll вернул код ошибки»?

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

    Если кто-то из вас помнит, то на этом ресурсе уже была похожая статья, в которой разбирался файл isdone.dll. Так вот, unarc.dll также является компонентом все того же установщика InnoSetup. Вы могли видеть данный установщик во многих раздачах программ, утилит или игр, которые качаете с торрентов, например. В общем, довольно популярная система создания инсталляторов для операционной системы Windows.

    Так из-за чего же происходит ошибка с файлом unarc.dll, да и с инсталлятором в общем? Проблем можно выделить довольно большое количество. Но, в основном, ошибка «unarc.dll вернул код ошибки» может быть вызвана двумя причинами: DEP(Предотвращение выполнения данных) и кириллица на пути установки. Однако могут присутствовать и другие причины, о которых тут тоже будет сказано. Теперь давайте же рассмотрим методы «лечения” такого недуга, как ошибка unarc.dll.

    Методы исправления ошибки с unarc.dll

    Метод №1 Отключения антивирусного ПО

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

    Метод №2 Обновить DirectX

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

    Метод №3 Кириллица на пути установки

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

    Метод №4 Проверка оперативной памяти

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

    Метод №5 Проверка жесткого диска

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

    • Нажмите правой кнопкой мыши по “Пуск”.
    • Выберите из контекстного меню пункт “Командная строка(администратор)”.
    • В появившейся Командной строке впишите команду chkdsk C: /F /R /B.
    • После этого запустится процесс проверки вашего жесткого диска, который может занять вполне продолжительное время.
    • После завершения процесса проверки вам будет предоставлен список с найденными и исправленными повреждениями.

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

    Метод №6 Отключение “Предотвращение выполнения данных”

    В операционной системе Windows есть много слоев защиты. И DEP(Предотвращение выполнения данных) является одним из этих слоев. Если упростить, то DEP помогает системе предохраняться и не запускать всякие подозрительные “элементы”, которые могут нанести вред ей, например, занести вирусов и т.п. Но порой DEP может заблокировать не то что нужно. Именно поэтому нужно внести исполнительный файл установщика в список исключений DEP. Для этого сделайте следующее:

    • Нажмите комбинацию клавиш Win+X и выберите из контекстного меню пункт “Система”.
    • В появившемся окне системы выберите пункт “Дополнительно”, который находится в нижнем левом углу окна.
    • Далее проследуйте пути “Дополнительно – Быстродействие – Параметры”.
    • Откройте вкладку “Предотвращение выполнения данных”.
    • Далее поставьте галочку напротив пункта “Включить DEP для всех программ и служб, кроме выбранных ниже”.
    • Для добавления файлов в список исключения нажмите “Добавить…”.
    • После помещения туда нужного вам файла не забудьте нажать “Ок” для подтверждения изменений.
    • Затем выполните перезагрузку системы.
    • Как только войдете в систему, снова попробуйте запустить установщик и посмотрите, не исчезла ли ошибка “unarc.dll вернул код ошибки”.

    Метод №7 Некачественная сборка

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

    Настройка оборудования

    Блог о модемах, роутерах и gpon ont терминалах.

    unarc.dll вернул код ошибки 1,6,7,12,14 — что делать и как исправить?!


    Очередная частая проблема, терзающая нервы заядлых геймеров — это ошибка с библиотекой unarc.dll при распаковке репаков игр или программ в операционных системах Windows 7, Windows 8 и 8.1. Как правило, она содержит сообщение типа: » Архив поврежден! Unarc.dll вернул код ошибки», а в заголовке окна значится имя ещё одной динамической библиотеки ISDone.dll. Наиболее частые коды ошибок — 1,6,7,11,12,14. При этом в 99% случаев с архивом на самом-то деле всё в порядке. Выяснить это довольно таки легко — надо просто смотреть не столько на код ошибки, сколько на разъяснение, которое идет после слова ERROR. Объясню на примере.

    В качестве причины ошибки значится «failed CRC Check», что как раз и говорит о повреждении архива. Поэтому Вам придется качать пакет заново или искать другой. А вот если причиной ошибки значится «decompression failed», как здесь:

    То в этом случае причину надо скорее всего искать на Вашем компьютере и чаще всего она заключается в том что не установлен нужный архиватор ( особенно часто в этом случае в сообщении об ошибке сказано: «unarc dll вернул код ошибки-7»). Понятно, что при инсталляции официальных лицензионных версий пользователь вряд ли столкнется с таким трудностями, так как там не гонятся за уменьшением объема пакета. А вот в случае repack’ов их создатели частенько любят использовать «экзотические» методы архивации (особенно если инсталляция имеет немалый объем), имеющие бОльшую степерь сжатия. Самые часто используемые архиваторы — это:

    — RAR с распаковкой через SFX.
    — 7-zip с его дополнительными алгоритмами bcj2, delta, lzma2, ppmd и большего словаря может обеспечить лучшее сжатие. Распаковка так же через SFX или dll.
    — FreeArc. Распаковка через SFX или dll.
    — NanoZIP. Распаковка через SFX.

    Помочь при таком раскладе может установка последней версии универсального архиватора 7-zip. Скачать её Вы можете с официального сайта.

    В принципе, приведенные выше способы устраняют ошибку isdone.dll и unarc.dll в 90% случаев. Все остальные причины являются частными. Тем не менее, я думаю что их нужно рассмотреть подробно.

    1. Наличие кириллических символов в наименовании директории. Проще говоря — папка, в которую Вы устанавливаете игру названа по русски, либо в пути к этой папке присутствуют русские слова или буквы. Поясню на примере:

    То есть Вам надо переименовать папку и попробовать снова установить приложение.

    2. Маленький файл подкачки.

    Ещё одна причина ошибок с unarc.dll — маленький размер или вообще полное отсутствие файла подкачки в Вашей Windows 7 или Windows 8. Это факт может стать критичным при распаковке архива размером в десяток гигабайт. Оперативной памяти начинает не хватать и система активно использует файл подкачки. Но и он не резиновый. Итог — «decompression failed». Чтобы увеличить файл подкачки надо зайти в свойства системы. Сделать это можно через Панель инструментов, либо нажав комбинацию клавиш Win+R и введя команду: sysdm.cpl

    Открываем вкладку «Дополнительно» и нажимаем кнопку «Параметры»:

    Затем снова вкладка «Дополнительно». В разделе «Виртуальная память» нажимаем кнопку «Изменить». Откроется вот такое окно:

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

    3. Оперативная память.

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

    Поэтому оптимальнее пойти вторым путем — проверить планки с помощью специальных программ. Самая популярная — Memtest86+. Правда запустить её не так просто — надо скачать, записать на диск и загрузиться с этого диска.
    Пользователи Windows 7 и Windows 8 могут воспользоваться встроенным в систему тестом. Для этого нажимаем кнопку Пуск и пишем: «Диагностика проблем оперативной памяти компьютера». Кликаем по найденному значку, откроется окно:

    Заключение:

    В список перечисленных способов и методов решения я не включил ещё один, к которому тем не менее пробуют прибегнуть некоторые пользователи. Они бороздят просторы сети и пытаются скачать файл библиотеки ISDone.dll или unarc.dll и установить их в системную папку. Этот способ не работает. Более того, я даже в Интернете не нашел ни одного реального случая чтобы это помогло. Максимум, чего удается добиться — это сменить код ошибки ( как правило вместо кода -7 появляется код -1).
    Если вышеуказанные варианты результата не принесли — Вам остается только пробовать переустанавливать Windows.

    https://gbcdn.mrgcdn.ru/uploads/post/2285/og_image/46ef2329aadf2e8160dc305ecb6d11af.png

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

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

    Reshift

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

    Основные функции:

    • Интеграция с Github и Bitbucket.
    • Пул-реквесты без переключения на другие дашборды во избежание путаницы.
    • Умная маркировка проблемных мест.
    • Отслеживание уязвимостей в каждой ветке.
    • Показ критических уязвимостей перед мерджем с главной веткой.

    Collaborator

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

    Основные функции:

    • Контроль за изменениями кода, определение проблем, создание комментариев.
    • Создание правил и уведомлений на их основе.
    • Кастомные поля, чеклисты, группы участников.
    • Интеграция с 11 разными SCM и IDE, в том числе Eclipse и Visual Studio.
    • Персонализированные ревью-отчеты.

    Gerrit

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

    Основные функции:

    • Интеграция с Git — возможность управления репозиториями Git через Gerrit.
    • Настраиваемая иерархия кода.
    • Добавление комментариев при внесении изменений.
    • Система голосований по вносимым изменениям

    Codestriker

    Ещё один неплохой open-source инструмент для ревью кода. Онлайн-сервис Codestriker позволяет быстро найти проблемы в коде и улучшить общее его качество.

    Основные функции:

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

    Crucible

    Онлайн-приложение для ревью кода, поиска проблем, обсуждения изменений в отдельных ветках, шеринга данных и т.п. Crucible не бесплатный сервис. Есть две версии — для небольших команд и для корпораций. В первом случае нужно один раз заплатить $10, после чего становятся доступными безлимитные репозитории для 5 пользователей. Корпоративная версия стоит $1100, покупатель получает возможность открыть безлимитный репозиторий для 10 пользователей. Есть демо-доступ на 30 дней.

    Основные функции:

    • Совместная работа как 2-3 программистов, так и больших групп разработчиков.
    • Возможность ревью кода как до, так и после внесения изменений.
    • Совместимость с SVN, Perforce и CVS.

    Review Board

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

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

    Основные функции:

    • Простая интеграция в ClearCase, CVS, Perforce, Plastic.
    • Выделение участков кода с проблемами или заданными параметрами.
    • Возможность использовать инструмент для ревью кода как до, так и после внесения изменений.

    GitHub

    Наверное, нет разработчика, который бы не слышал о GitHub, но как автоматический ревьюер кода он известен гораздо меньше. Здесь у него есть две версии — бесплатная, с ограничением по количеству пользователей, и платная, от $7 в месяц.

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

    Основные функции:

    • Сравнение фрагментов кода лоб в лоб.
    • Просмотр истории отдельных фрагментов кода без просмотра всего документа — так называемый blame view.
    • Создание white-листов по отдельным веткам. 

    Phabricator

    Это целый набор open-source инструментов от Phacility, облегчающих работу по оценке кода. Можно использовать облачную версию, а можно загрузить всё на свой сервер. Если использовать второй вариант — ограничений нет. В случае же облачной версии нужно будет платить от $20 за пользователя в месяц. Верхняя планка  – $1000 в месяц. Все платные предложения включают техническую поддержку, плюс 30-дневный пробный режим.

    Основные функции:

    • Поддержка Git, Mercurial и SVN
    • Встроенные чаты, канбан-доски и другие инструменты
    • API для создания скриптов, взаимодействующих с Phabricator через HTTP JSON API

    Rhodecode

    Онлайн-инструмент, который поддерживает три версии систем контроля: Mercurial, Git и Subversion. Сервис не бесплатен. Цены начинаются с $8 в месяц за пользователя. Есть возможность заплатить сразу $75 за пользователя в год, что позволяет сэкономить пару десятков долларов. Если не хочется платить, можно загрузить community-edition, установив на своём сервере.

    Основные функции:

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

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

    А какими инструментами пользуетесь вы? Ждём комментариев, поделитесь с коллегами 🙂

    Добавить комментарий