Есть ли в С# оператор, эквивалентный DebugBreak()
? Я хочу вызывать отладчик, когда встречается определенное условие.
Эквивалент DebugBreak() в С#
Ответ 1
Вы можете использовать метод Break
класса Debugger
в System.Diagnostics
имен System.Diagnostics
:
Debugger.Break();
Теперь есть и другой способ добавления условных точек останова, без необходимости добавлять код в ваш проект.
Это, конечно, работает только тогда, когда ваша программа запускается через отладчик.
Что вы можете сделать, это сначала добавить обычную точку останова в том месте, где вы хотите, чтобы ваш отладчик остановился, затем щелкните правой кнопкой мыши красную точку для точки останова:
а затем отредактируйте условие в соответствии с вашими потребностями:
Это будет затем обозначено маленьким + внутри вашей точки останова:
Ответ 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();
Ответ 5
Эта статья о MSDN дает представление об этой самой проблеме. http://blogs.msdn.com/b/calvin_hsia/archive/2006/08/25/724572.aspx