Эквивалент DebugBreak () в C # - PullRequest
       20

Эквивалент DebugBreak () в C #

28 голосов
/ 19 января 2011

В C # есть ли оператор, эквивалентный DebugBreak()? Я хочу вызвать отладчик, когда будет выполнено определенное условие.

Ответы [ 4 ]

38 голосов
/ 19 января 2011

Вы можете использовать метод Break класса Debugger в пространстве имен System.Diagnostics:

Debugger.Break();

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

Это, конечно, работает только тогда, когда ваша программа запускается через отладчик

Что вы можете сделать, это сначала добавить обычную точку останова в то место, где вы хотите, чтобы ваш отладчик остановился, затем щелкните правой кнопкой мыши красную точку для точки останова:

breakpoint right-click menu

и затем отредактируйте условие в соответствии с вашими потребностями:

breakpoint condition dialog

Это будет обозначено маленьким + внутри вашей точки останова:

conditional breakpoint

15 голосов
/ 19 января 2011

Что касается других ответов, я предпочитаю использовать Debugger.Launch().

Если приложение еще не запущено в отладчике, Launch() вызовет диалоговое окно отладчика, позволяющее подключить Visual Studio (или другой отладчик) к процессу. Однако, если вы уже отлаживаете, он проплывет сразу после вызова Debugger.Launch(). Break(), с другой стороны, будет действовать в качестве точки останова - прерывать каждый раз, когда достигнет этой точки (и вызывать диалог отладчика, если процесс не был присоединен).

Будьте ОЧЕНЬ осторожны, чтобы не оставить ни одного утверждения в своем коде. Отправка кода с помощью Debugger вызовов в производство может остановить ваше приложение или создать очень трудно отследить ошибки (плохой опыт в прошлом месяце).

5 голосов
/ 19 января 2011
System.Diagnostics.Debugger.Break();

//Lauches the JIT debug window
System.Diagnostics.Debugger.Launch();

Это особенно полезно при отладке службы, когда вы получаете окно отладчика Just In Time, а затем можете выбрать окно Visual Studio для отладки службы.

2 голосов
/ 19 января 2011

Может быть Debugger.Break

System.Diagnostics.Debugger.Break();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...