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

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

Ответ 1

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

Debugger.Break();

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

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

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

breakpoint right-click menu

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

breakpoint condition dialog

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

conditional breakpoint

Ответ 2

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

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

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

Ответ 3

System.Diagnostics.Debugger.Break();

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

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

Ответ 4

Возможно Debugger.Break

System.Diagnostics.Debugger.Break();