Эквивалент DebugBreak() в C#
В C# есть ли оператор, эквивалентный DebugBreak(). Я хочу вызывать отладчик, когда встречается определенное условие.
Пожалуйста помоги
5 ответов
Вы можете использовать метод Break класса Debugger в пространстве имен System.Diagnostics:
Debugger.Break();
Теперь есть и другой способ добавления условных точек останова, без необходимости добавлять код в ваш проект.
Это, конечно, работает только тогда, когда ваша программа запускается через отладчик.
Что вы можете сделать, это сначала добавить обычную точку останова в том месте, где вы хотите, чтобы ваш отладчик остановился, затем щелкните правой кнопкой мыши красную точку для точки останова:
а затем отредактируйте условие в соответствии с вашими потребностями:
Это будет затем обозначено маленьким + внутри вашей точки останова:
Что касается других ответов, я предпочитаю использовать Debugger.Launch(). Если приложение еще не запущено в отладчике, Launch() вызовет диалоговое окно отладчика, позволяющее подключить Visual Studio (или другой отладчик) к процессу. Однако, если вы уже отлаживаете, он пройдет сразу же после вызова Debugger.Launch(). Break (), с другой стороны, будет действовать как точка останова - прерывать каждый раз, когда достигнет этой точки (и вызывать диалог отладчика, если процесс не был присоединен).
Будьте ОЧЕНЬ осторожны, чтобы не оставить ни одного утверждения в своем коде. Отправка кода с помощью отладчика обращений к продукту может остановить ваше приложение или создать очень трудно отследить ошибки. (Плохой опыт в прошлом месяце)
System.Diagnostics.Debugger.Break();
//Lauches the JIT debug window
System.Diagnostics.Debugger.Launch();
Это особенно полезно при отладке службы, когда вы получаете окно отладчика Just In Time, а затем можете выбрать окно Visual Studio для отладки службы в
Может быть, Debugger.Break
System.Diagnostics.Debugger.Break();
Эта статья на MSDN дает представление об этой самой проблеме. http://blogs.msdn.com/b/calvin_hsia/archive/2006/08/25/724572.aspx