Дебаг, или как защитить себя от насекомых

Мухсы

Подходит к концу лето — время, когда не знаешь, куда деть себя от многочисленных мух, комаров, жуков, пауков и прочей летающей гадости. И ты думаешь наконец-то забыть на добрых полгода те очень приятные ощущения, которые дарят тебе ползающие по твоему телу маленькие шестиногие твари. Не придется тебе в самые ответственные моменты пребывания на www.lolita.ru отрывать руки от любимого дела, чтобы стряхнуть с твоего монитора… назойливую муху, которая так и норовит приползти в самое живописное место экрана. Но, кажется, настало время тебя круто обломать, чувак-кульной-программист, ведь теперь и летом, и зимой тебя повсюду будут преследовать самые страшные надоедливые кусающиеся и притом настолько маленькие, что я даже не могу тебе их нарисовать, насекомые — баги. Баги (не путай с «буги») питаются исключительно твоими мозгами, заставляя тебя не спать ночами, не есть месяцами и не заниматься сексом годами. Эти крошечные жучки поселяются поодиночке или целыми стадами в каждой написанной тобой проге и делают разные маленькие, а бывает и большие пакости, из-за которых ни одна твоя прога не станет работать с первого раза, а будет только вешать твой драгоценный комп и выдавать на экран всякую белиберду.

Что, страшно? Расслабься. Сейчас ты узнаешь, какие средства, придуманные лучшими умами современности, помогут тебе избавиться от багов и как ими пользоваться. Что тебе для этого потребуется: представление о том, как пишутся программы (хе-хе, просто прочитай глоссарий… а можешь и не читать даже 😉 ), и о языках программирования плюс наличие перед тобой включенного компа с запущенным Visual C++ 6.0. Но не все сразу, а то боюсь, чувак, тебя сильно загрузить. Сначала разберемся, что же реально представляют собой баги. Слово «баг» (бага, жучок, вошь, клоп и т.д.) ты, наверное, слышал, когда твои друзья говорили о передовой (гы-гы-гы) операционной системе Microsoft Windows 95/98/00. Когда в очередной раз комп перестает подавать признаки жизни во время работы под этой осью, все сразу вспоминают о багах. Как ты понял, баг — это любая ошибка в проге, которая может сильно огорчить юзера, заплатившего добрые сто долларов за приобретение лицензионной версии очередного творения компании Mrakosoft. К сожалению, не только сотрудник конторы Б.Г., месяцами не получающий зарплату, может с голодухи назло начальству напихать кучу ошибок в свой кусок кода. Каждый, такой же как и ты, крутой программер, делает ошибки в своем первом вирусе или первой программе низкоуровнего форматирования винта. Ты не сможешь научиться не делать ошибок, ты сможешь только научиться их находить и исправлять. Для этого люди придумали дебаг.

DebuG

Дебаг (debug) — это просто поиск и исправление ляпов в твоем коде. По-русски это называется отладкой. Лет 30-40 назад программерам приходилось часами всматриваться в свои исходники с целью найти место, где находится ошибка, из-за которой их прога не могла нормально работать. Но позже для облегчения дебага люди придумали одну интересную вещь — дебагер, прогу, которая помогает найти ошибки в другой (их бин, в нашем случае твоей) проге. Именно как пользоваться дебагером я тебе и поведаю.

Дебагер мы будем изучать микрософтовский (не пугайся, «Микрософт» — не значит «очень плохо», в нашем случае это просто означает «достаточно просто»), тот, что из 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;» (получится такая прога):

#include <stdio.h>

int i;

main(int argc, char* argv[])

{

printf(«Hello world!\n»);

i = 10;

return 0;

}

Нажми F7 (перекомпилить), а затем F11. Когда прога запустилась, посмотри в окно Watch. Там показано значение i = 0. Нажимая F10, дойди до строчки i = 10 и выполни ее, после чего увидишь, что Watch станет показывать i = 10. То есть Watсh показывает все изменения переменных, которые происходят в программе. Вот так, если твоя прога выдает неправильный результат, можно узнать, когда и где он получается. Естественно, ты не сразу научишься пользоваться дебагером, это требует определенных навыков, но зато потом отладчик станет для тебя незаменимой вещью во время написания любой программы и сэкономит кучу твоего драгоценного времени, которое можно было бы потратить на то, чтобы встать, наконец, из-за компа и пойти попить пива с друзьями. Какую пользу еще может принести дебагер? Если ты намереваешься в недалеком будущем заняться crack’ом, то основным инструментом в твоих шаловливых ручонках будет, конечно же, отладчик, твой друг и верный спутник.

С чем едят

Теперь ты знаешь, что такое дебаг и с чем его едят. Не все возможности дебагеров здесь описаны, существует еще множество функций, которые помогают обнаружить жучки в самых отдаленных уголках исходника. Дебагеров тоже существует великое множество. Обычно у каждой версии языка есть свой дебагер (Delphi, Borland C++, Visual C++, Visual Basic и т.д.), имеется также куча независимых дебагеров, из которых самый известный борландовский Turbo Debugger. Интерфейсы у них схожие, и возможности примерно одинаковые. Какой выбрать — решай сам. Итак, удачи тебе, чувак-кульной-программист, в постижении азов дебага и в борьбе с насекомыми, которые, как известно, всегда заводятся не там, где надо.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

− 2 = 4