Эквивалент 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

Другие вопросы по тегам