Как я могу использовать debugbreak () в C #? - PullRequest
31 голосов
/ 19 сентября 2008

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

Ответы [ 5 ]

41 голосов
/ 20 сентября 2008

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

using System.Diagnostics;

//.... in the method:

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}
21 голосов
/ 19 сентября 2008

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

System.Diagnostics.Debugger.Break();
8 голосов
/ 19 сентября 2008

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

#if DEBUG
  System.Diagnostics.Debugger.Break();
#endif
3 голосов
/ 19 сентября 2008

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

2 голосов
/ 21 марта 2016

Ответы @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

...