събота, 3 август 2013 г.

[Debugging] Полезни техники

Blog of Syssboxx

Като всеки начинаещ в началото мисълта да използвам дебъгера леко ме плашеше, докато не установих колко полезен може да бъде той - най-напред, за да си визуализирам как точно се случват нещата в програмите, а след това и за да откривам неправилно работещите части в нея. Накратко можем да наречем дебъгера най-добрия приятел на програмиста :) негов верен помощник. Затова си струва да се отдели малко време, за да се разучат полезните техники, които могат да ни улеснят живота.

Полезни клавишни комбинации

F5 - влизаме в режим на дебъгване

F5 + SHIFT - изход от режим на дебъгване

F9 - поставяне на точка на прекъсване (breakpoint) за проследяване на изпълнението й

F10 Step Over - изпълнява програмата в дебъг режим ред по ред, без да влиза в кода на методите.

F11 Step Into - изпълнява методите в програмата, след приключване на метода се връща до реда на извикването на метода.

F11 + SHIFT - връща ни до реда на извъкването на метода, преди да е плиключило изпълнението на метода.

F12 - отвежда ни до дефиницията на метод или клас. Чрез F10/F11 се връщаме обратно до текущния ред.

Полезни техники за дебъгване

Проследяване на стойност

Можем да проверим стойността на променлива в движение,поставяйки курсора на мишката над нея, ако изпълнението на програмата вече е преминало през променливата и тя има присвоена стойност. Важно е да се отбележи, че присвоената стойност се отчита след преминаване на следващия ред.

Прекъсване при изпълнено условие / Conditional Breakpoint

Задаване на конкретно условие, при което програмата да спре изпълнението си.Опциите се появяват при задържан десен клавиш над точката на прекъсване. Това може да бъде полезно в цикли, когато кодът ни трябва да се изпълнвява например 100 пъти, а нас ни интересува единствено случая когато променливата е със стойност 50.Други полезни опции за избор на условие са : Location, HitCount, Filter, WhenHit, EditLabel. Последното позволява именуване на точките на прекъсване, което прави навигацията между тях много по-лесна.

Друг начин за изпъление на точно определен ред е задавайки опцията Set Next Statement с десен бутон върху променливата. След това вече можем да го изпълним чрез Go to Next Statement.

Immediate Window

Този прозорец ни позволява в движение да тестваме директно в него резултата от операции или присвояване.

Debug>Window>Immediate Window

Добавяне в списък за наблюдение / Add Watch, QuickWatch

Чрез Add Watch добавяме избраната променлива или израз в списъка от локални променливи в прозореца Watch, чрез което можем да следим как се променят стойностите й при изпълнението на програмата. тези стойности могат да бъдат и временно променени, за да се проследни изпълнението при определената стойност - например при i=3

Проследяване на извиканите методи / Call Stack

В дебъг режим ot меню Debug>Windows>Call Stacks можем да проследяваме всеки метод колко пъти е бил извикван.

Насоки

Следните насоки могат да подпомогнат по-лесното откриване на проблемите в кода

Възпроизвеждане на проблема, стъпката по стъпка, за да се установи на какво точно се дължи той. През колкото повече стъпки преминава дадена задача, толкова повече различни причини за грешка може да има.

Известно количество параноя при дебъгването не е излишно. Не трябва да се приема факата, че всичко работя така, както се очаква

Да се оправя само по един един проблем наведнъж.

Да се разучат възможностите на конкретния дебъгер.

Да се тества отново - когато си сигурен, че проблемът вече е отстранен ,тествай го отново при различни случай, за да се увериш, че наистина работи коректно.

още насоки за дебъгване

Няма коментари:

Публикуване на коментар