Есть ли у Debugger.Break какие-либо побочные эффекты? - PullRequest
0 голосов
/ 27 сентября 2018
System.Diagnostics.Debugger.Break(); // this DB call has not been mocked

Я хотел бы разместить их в коде на сайте вызовов ввода / вывода, чтобы дать знать разработчикам модульных тестов, когда они неправильно смоделировали вызов, но я не хочу создавать новые проблемы.

  1. Оказывает ли вызов Debugger.Break () какое-либо влияние при компиляции как Release?

  2. Имеет ли это какое-либо влияние при выполнении сборки Debugа не отладка?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Как поясняется в комментариях и ответе @ AndyJ, ваша программа будет аварийно завершать работу, если к процессу не подключен отладчик.

Вам может потребоваться проверить, подключен ли отладчик перед вызовом Debug.Break во время выполнения,Для этого есть свойство API, System.Diagnostics.Debugger.IsAttached

0 голосов
/ 27 сентября 2018

К сожалению, для вашего варианта использования он подходит.

Для решения ваших проблем:

  1. Debugger.Break будет работать для любой конфигурации сборки.Отладка, выпуск или что-то еще.

У Тима Шмельтера было хорошее предложение.Если вы хотите ограничить Debugger.Break только отладочными сборками, вы можете использовать Условная компиляция .

#if DEBUG
    Debugger.Break();
#endif
Debugger.Break будет иметь побочные эффекты, даже если отладчик не подключен.

Если отладчик не подключен, он либо попытается присоединить отладчик, либо отправит сообщениеподсистема отчетов об ошибках Windows (WER) в зависимости от того, на какую версию .Net Framework вы нацеливаетесь.

Если отладчик не подключен, пользователей спрашивают, хотят ли они присоединить отладчик.

...

Начиная с .NET Framework 4, среда выполнения больше не контролирует запуск отладчика для метода Break, а вместо этого сообщает об ошибке подсистеме Windows Error Reporting (WER)..

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debugger.break?view=netframework-4.7.2#remarks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...