заставить отладчик сломаться при следующем событии щелчка

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

Благодарю.


person user734028    schedule 05.01.2015    source источник
comment
Это зависит от вашей версии Visual Studio. Что вы должны искать условные точки останова.   -  person user743414    schedule 05.01.2015


Ответы (3)


Непосредственно перед нажатием кнопки в программе сделайте следующее:

Перейдите в визуальную студию и приостановите программу. Просто нажмите кнопку паузы. Затем нажмите F11 (Шаг внутрь).

Теперь нажмите кнопку в программе, и вы должны попасть в обработчик событий.

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

Для веб-проектов метод, предложенный Якобом Ольсеном, на самом деле не будет работать, потому что у вас нет активного потока между вызовы и, следовательно, нет потока для возобновления при следующем действии. Однако то, что сработало для меня, было:

  • Найдите какой-нибудь код (любой код в вашем приложении), который, как вы точно знаете, будет выполнен, и установите точку останова.
  • Запустите эту точку останова, используйте SHIFT-F11, чтобы выйти, пока вы не выйдете из всех методов
  • Теперь выполните действие, код которого вы не знаете, и оно сломается.
person Damian Vogel    schedule 12.07.2019

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

Если ваши события кликов называются Button_Click, откройте окна точек останова во время отладки и создайте новую точку останова.

Нажмите OK, и вы увидите список функций. Проверьте их и нажмите ОК. Для каждой выбранной вами функции будет создана точка останова.

введите здесь описание изображения

person Mike    schedule 05.01.2015