да накарате дебъгера да се счупи при следващото щракване

в проект за .net windows forms, който има стотици формуляри и всички тези формуляри имат безброй персонализирани контроли с включени базови класове, за мен е много трудно да разбера къде е даден бутон, имам предвид какво е името на формуляра, който съм гледам, докато изпълнявам приложението, и къде точно е събитието за натискане на бутон, в кода, на бутона, който току-що щракнах. Има ли функция за отстраняване на грешки във Visual Studio, която просто би прекъснала изпълнението за мен до реда, където е станало щракването. Мога ли да кажа на VS да прекъсне при следващото събитие Click? (работи визуално студио 2012/13 тези дни).

Благодаря.


person user734028    schedule 05.01.2015    source източник
comment
Това зависи от вашата версия на Visual-Studio. Какво трябва да търсите за условни точки на прекъсване.   -  person user743414    schedule 05.01.2015


Отговори (3)


Точно преди да щракнете върху бутона в програмата, направете следното:

Отидете във Visual Studio и поставете на пауза програмата. Просто натиснете бутона за пауза. След това натиснете F11 (Step Into).

Сега натиснете бутона в програмата и трябва да бъдете отведени в манипулатора на събития.

person Jakob Olsen    schedule 05.01.2015
comment
така че това е много интересно решение, правил съм го няколко пъти преди. Просто трябва да внимавате, в случай че вашият формуляр има код зад събитията за движение/задържане на курсора на мишката, този код ще се счупи веднага след като сте натиснали f10/11, след като натиснете бутона за пауза и случайно сте преместили мишката върху тази конкретна област. В моя случай формулярът спря на оператора Application.Run(), след това натискам F10 и се връщам на работещия формуляр, сега внимателно премествам мишката до въпросния бутон и щраквам върху него, и ме изпускат където исках да бъда. Този съвет/функционалност никога не трябва да се забравя. Благодаря. - person user734028; 05.01.2015
comment
Просто от любопитство (не съм много запознат с вътрешността на визуалното студио): защо трябва да влезете преди да щракнете върху бутона? - person ilpelle; 09.05.2017
comment
Това работи само ако сте отметнали Активиране само на моя код в Опции | Отстраняване на грешки | Общ. - person Jazimov; 20.12.2017

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

  • Намерете някакъв код (който и да е код във вашето приложение), за който знаете със сигурност, че се изпълнява, и задайте точка на прекъсване
  • Задействайте тази точка на прекъсване, използвайте SHIFT-F11, за да излезете, докато не излезете от всички методи
  • Сега извършете действието, за което не знаете какъв код се изпълнява, и то ще се счупи
person Damian Vogel    schedule 12.07.2019

Мога да предложа частично решение.

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

Щракнете върху OK и ще видите списък с функции. Проверете ги и щракнете върху OK. За всяка функция, която сте избрали, ще бъде създадена точка на прекъсване.

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

person Mike    schedule 05.01.2015