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

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


person Prache    schedule 19.09.2008    source источник


Ответы (5)


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

using System.Diagnostics;

//.... in the method:

if( Debugger.IsAttached) //or if(!Debugger.IsAttached)
{
  Debugger.Break();
}
person Philip Rieck    schedule 19.09.2008

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

System.Diagnostics.Debugger.Break();
person MagicKat    schedule 19.09.2008

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debugger.break#System_Diagnostics_Debugger_Break

#if DEBUG
  System.Diagnostics.Debugger.Break();
#endif
person John Hoven    schedule 19.09.2008
comment
Отличный +1 за #if DEBUG! Это ужасно, когда dev. оставляет этот код в релизе. - person 23W; 14.08.2018

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

person CAD bloke    schedule 21.03.2016

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

person Quintin Robinson    schedule 19.09.2008