Мониторинг обменных курсов валют
18c0693f

Убедитесь, что ошибка исправлена


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

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

История отладочных войн

Сражение

Один из разработчиков, с которым автор работал в NuMega, думал, что он нашел большую ошибку в интегрированной среде разработки программ на Visual C++ (VC IDE1) фирмы NuMega, потому что VC IDE не работала на его машине.

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

1VC IDE — Visual C++ Integrated Development Environment (Интегрированная Среда Разработки программ на языке Visual C++). Разработчики данной фирмы сокращенно называют эту систему VC IDE-интеграцией (VC IDE integration). — Пер.

Результат

Этот разработчик потратил часа два, исследуя "ошибку" с помощью SoftlCE. Через некоторое время, установив контрольные точки по всей операционной системе, он заметил, что при запуске VC IDE функция API CreateProcess называлась "\\R2D2\VCommon\MSDev98\Bin\MSDEV.EXE", а не "C:\VSCommon \MSDev98\Bin\MSDEV.EXE", как должно было быть.
Другими словами, VC IDE выполнялась на машине \\R2D2\VCommon\MSDev98\Bin\MSDEV.EXE (вместо C:\VSCommon\MSDev98\Bin\MSDEV.EXE). Как это случилось?
Разработчик только что получил новую машину и установил полную VC IDE для продуктов от NuMega. Чтобы установить ее быстрее, он скопировал связи (LNK-файлы) своего рабочего стола, которые были установлены без VC IDE, со своей старой машины на новую, перетаскивая их мышью. При перетаскивании LNK-файлов внутренние связи обновляются, чтобы отразить местоположение первоначальной связи. Поэтому VC IDE всегда запускалась из LNK-файла пиктограммы рабочего стола, который указывал на старую машину. Таким образом, он все время выполнял VC IDE своей старой машины.
Урок
Решая проблему отладки, разработчик пошел по неправильному пути: вместо попытки многократно дублировать проблему, он попытался просто внедриться в ядро отладки. Выше, в разделе "Шаг 1. Дублируйте ошибку" сказано, что следует попытаться дублировать ошибку несколькими способами, чтобы быть уверенными, что вы имеете дело действительно с ошибкой. Соответствующие рекомендации даны в разделе "Шаг 5. Думайте творчески" данной главы.




Самый выгодный курс обмена валюты