Дебаг, или как защитить себя от насекомых
Дебагер мы будем изучать микрософтовский (не пугайся, "Микрософт"
- не значит "очень плохо", в нашем случае это просто означает
"достаточно просто"), тот, что из Visual C++ 6, на примере самой
простой проги на С++. Прога ничего не делает, только печатает
на экране "Hello world!" и завершается. Можно заменить "Hello
world" на "Bill G***s must die". Чтоб написать прогу "Хело Ворлд"
- можешь прочесть о ней в этом спеце целую статью, а можешь, не
вдаваясь в подробности, просто читать дальше :). Для начала надо
запустить Visual C++. Затем выбрать File->New... и в появившемся
окне выбрать вкладку Projects, а затем иконку Win32 Console Application.
В поле Project Name набей название твоей проги типа VASYAPUPKINEXE.
После того как нажмешь ОК, в появившемся окне будет предложено
сгенерить конкретный проект: 1) пустой проект, 2) простое приложение
(ничего не делает), 3) приложение Хеллоу Уорлд, 4) приложение
с поддержкой MFC. Выбери третий пункт, нажми Finish, а в следующем
окне нажми ОК.
Visual C++ сгенерил программу, которую и следует отладить. Однако,
перед тем как начать, ты должен знать об основных методах работы
в дебагере, их два:
пошаговое выполнение (это когда каждая строчка исходного кода
выполняется по нажатию клавиши) и прерывание по контрольным точкам
(т.е. прога выполняется до определенного момента, а именно - до
строчки в исходнике, которую ты укажешь, и затем останавливается
на этом месте, после чего ты можешь перейти к пошаговому выполнению,
просмотреть значения переменных в данный момент времени или просто
пойти попить кофе). Можно начинать: возьми мышку в правую руку
(можно в левую) и выбери пункт меню Build->Build xxxxxxxx.exe,
а затем Build->Start debug->Step Into.
Этим ты начнешь пошаговое выполнение программы. После непродолжительного
треска винта перед глазами развернется рабочая область дебагера,
где основное место занимает окошко с исходником. Слева от текста
проги есть желтая стрелочка (в китайской версии Visual C++ - маленький
значок "серп и молот" ;) ), которая показывает, на каком месте
прервана программа.
Нажми F10 или выбери иконку, как на рисунке.
Стрелка опустится вниз: выполнилась еще одна строчка. Теперь
посмотри в ДОСовское окно твоей программы - оно пустое, а затем
перейди обратно в отладчик и снова нажми F10. Если ты посмотришь
теперь в окно программы, то увидишь надпись вверху "Hello world",
результат работы строчки printf ("Hello world\n"). Нажми Shilft+F5,
и дебаг завершится.
Еще DebuG
Чувак, это круто - ты только что отлаживал программу в пошаговом
режиме. Теперь разверни исходник и щелкни правой кнопкой мышки
в поле слева от строчки return 0. В меню щелкни пункт Insert/Remove
Breakpoint, после чего эта строчка пометится красным кружочком.
Запусти программу кнопкой F5. Видишь, прога остановилась на той
строчке, которую ты пометил, и теперь ты можешь узнать ее полное
состояние в этом месте. Ты спросишь меня, зачем вся эта фигня
тебе нужна и какая от нее польза. Дело в том, что ты не должен
все время слепо щелкать по кнопке F10 и ждать, что твоя программулина
ни с того ни с сего заработает. Когда ты пошагово выполняешь программу,
ты можешь следить за значениями переменных в твоем коде в специальном
окне Watch, поэтому ты можешь найти место, в котором нужная тебе
переменная изменилась, и узнать ее новое значение. Это позволяет
довольно просто находить практически любые твои ошибки, ведь так
легко определить место, где что-то в программе неправильно просчитывается.
Сейчас ты узнаешь, как все это работает на практике. Добавим в
нашу программу переменную и будем, изменяя ее, следить за ее значениями.
В исходнике после строчки #include <stdio.h> добавь строчку
"int i;", а после строчки printf("Hello world\n") добавь строчку
"i = 10;" (получится такая прога):