Как я могу использовать debugbreak() в C#?

Каков синтаксис и какое пространство имен / класс необходимо импортировать? Дайте мне пример кода, если это возможно. Это было бы очень полезно.

5 ответов

Я также хотел бы проверить, подключен ли отладчик - если вы вызываете Debugger.Break, когда отладчика нет, он подскажет пользователю, хотят ли они его подключить. В зависимости от поведения, которое вы хотите, вы можете вызывать Debugger.Break(), только если (или если нет) один из них уже подключен

using System.Diagnostics;

//.... in the method:

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}

Поместите следующее, где вам это нужно:

System.Diagnostics.Debugger.Break();

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

#if DEBUG
  System.Diagnostics.Debugger.Break();
#endif

Ты можешь использовать System.Diagnostics.Debugger.Break() сломаться в определенном месте.. это может помочь в таких ситуациях, как отладка службы.

Ответы @Philip Rieck и @John немного отличаются.

Джон...

#if DEBUG
  System.Diagnostics.Debugger.Break();
#endif

работает только если вы скомпилировали с набором символов условной компиляции DEBUG.

Ответ Филиппа...

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}

будет работать для любого отладчика, так что вы тоже немного напугаете хакеров.

Также принять к сведению SecurityException он может выбросить, так что не выпускайте этот код в дикую природу.

Еще одна причина нет...

Если отладчик не подключен, пользователей спрашивают, хотят ли они присоединить отладчик. Если пользователи говорят "да", отладчик запускается. Если отладчик подключен, отладчик получает сигнал о событии точки останова пользователя, и отладчик приостанавливает выполнение процесса так же, как если бы была достигнута точка останова отладчика.

с https://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break(v=vs.110).aspx

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