Отстраняване на грешки в Visual Studio - Точки за флагове?

Търся функция - чудя се дали съществува в някой плъгин на трета страна или нещо подобно. По принцип това, за което си мисля, би било нещо, което можете да настроите, което би било като точка на прекъсване, само че не спира изпълнението. Просто променя външния вид (може би променя цвета) на точката на прекъсване, когато този ред код се изпълни. Може дори да използва брояч, така че можете да видите във всеки един момент колко пъти тази линия е била изпълнена.

По принцип това би било полезно, когато получите изключение, хвърлено по такъв начин, че проследяването на стека ви е по-малко от информативно (може би обработката на грешки се обработва в отделна нишка или може би различните пакети имат различни настройки за оптимизация, така че не всички са директно с възможност за отстраняване на грешки), след това можете да погледнете и лесно да видите кои редове код са изпълнени и много бързо да стесните източника на изключението. Наясно съм, че можете да поставите брой удари на обикновени точки на прекъсване и можете просто да зададете стойността наистина висока, за да спрете действителното прекъсване в тези точки, но броячите на точки на прекъсване не се виждат веднага, така че трябва да задръжте курсора на мишката върху тях един по един, за да видите къде е спряло изпълнението. Това би осигурило незабавна следа, водеща точно до точката, където нещата се объркаха - като да следвате липсващите точки, за да разберете къде е Pacman.

Просто съм любопитен дали някой е виждал приставка, която може да прави подобни неща, или просто си мечтая тук.


person Darrel Hoffman    schedule 25.10.2012    source източник


Отговори (1)


Обмисляли ли сте да използвате точки за проследяване? Добавяте ги чрез нормалното меню за точка на прекъсване, но трябва да изберете опцията When hit...:

въведете описание на изображението тук

В прозореца, който трябва да се появи, имате няколко налични системни променливи, които ще опишат кой е извикал вашата точка за проследяване - нека добавим , hits: {hits++} към настройките по подразбиране (маркирах с червено важните части):

въведете описание на изображението тук

Накрая дефинирайте променлива за попадения в класа, където сте поставили вашата проследяваща точка:

class Program
{
#if DEBUG
    private static int hits;
#endif
...

Стартирайте кода си под VS debugger и трябва да видите във вашите незабавни/изходни регистрационни файлове (в зависимост от вашите настройки) като тези по-долу:

Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 1
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 2
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 3
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 4
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 5
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 6
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 7

Надявам се да помогне :)

person Sebastian    schedule 26.10.2012
comment
+1, защото виждам, че това може да помогне за този тип неща, но вече имаме системи за отпечатване на съобщения за конзола в кода, така че добавя само малко - проблемът е, че кодът произвежда толкова огромно количество на изхода, който бързо се изтласква от буфера на конзолата. Някакъв вид видим флаг в самия код е това, което наистина търся, ако съществува. - person Darrel Hoffman; 26.10.2012