Есть ли способ разбить следующую строку кода, выполняемую в Visual Studio?
Я пытаюсь отследить ошибку, которая возникает, когда я нажимаю на конкретный элемент на странице aspx...
В прошлом мне приходилось отслеживать класс, который обрабатывает это конкретное событие, и поставить точку останова на строке, которая, как мне кажется, должна быть удалена. Часто мне требуется несколько попыток, прежде чем я, наконец, найду правильный класс... особенно если класс - это пользовательский элемент управления, который где-то похож...
Поэтому мне стало интересно, есть ли способ заставить Visual Studio сломаться на следующей строке кода, выполняемой после нажатия элемента (например, кнопки) на странице aspx. Я знаю, что есть способ сломать любое исключение, которое бросается, поэтому я думаю, может быть, есть что-то похожее, которое могло бы мне помочь.
Если такой возможности нет, возможно, кто-то может предложить лучший способ быстро найти класс, который я хочу отлаживать...
Ответы
Ответ 1
Вы пробовали кнопку Debug > Break All ( "пауза" )? (Ctrl + Break)
![Debug > Break All]()
Как правило, он разбивается где-то довольно низко в стеке, например, на Show() для вашей основной формы в приложении WinForms, но если вы затем сделаете шаг, чтобы пройти мимо этого, он будет часто работать довольно хорошо для этого типа вещи.
Ответ 2
Вы ищете Step Into (F11)
или Step Over (F10)
?
- Изменить
Вы также знаете о Call Stack
окне? Это может помочь вам определить ваше местоположение и что происходит.
Ответ 3
Условные точки останова могут быть вашим ответом. Вы можете установить их, если вы думаете, что ваш код ломается, и они остановятся только тогда, когда условие будет выполнено.
Ответ 4
Отладка → Исключения
Отметьте бросок для Исключения CLR.
ИЗМЕНИТЬ
Скорее всего, вы имеете исключение CLR. Используя этот метод, отладчик всегда будет ломаться, когда возникает исключение. Это очень удобно по сравнению с чтением трассировки стека.
Ответ 5
Некоторые идеи:
-
Если вы используете согласованное соглашение об именах для ваших обработчиков событий, тогда должно быть тривиально выполнять глобальный поиск для всех и добавлять точки останова. Вы можете быстро записать макрос при первом попадании, а затем воспроизвести макрос, чтобы не допустить повторения операции многократно. С небольшой практикой вы сможете в любой момент отбросить все обработчики в течение нескольких секунд.
-
Добавьте дополнительный обработчик события для события (создайте его раньше - например, в конструкторе - поэтому он добавлен перед всеми другими обработчиками событий, которые добавляет ваше приложение, и поэтому, надеюсь, вызывается первым) и вставьте в него контрольную точку, После того, как вы нажмете точку останова, вы можете сделать один шаг через другие обработчики событий в событии.
-
напишите настраиваемый обработчик событий, который обрабатывает клик и просто генерирует новое событие. Прикрепите все другие обработчики событий к этому второстепенному событию. Затем вы можете остановить первый обработчик и пройти через вторичные обработчики, которые он вызывает.