Перестал работать System.Diagnostics.Debugger.Debug () - PullRequest
11 голосов
/ 19 марта 2010

Я работаю над программой, которая использует метод System.Diagnostics.Debugger.Break (), чтобы позволить пользователю устанавливать точку останова из командной строки. Это работало хорошо в течение многих недель. Однако, когда я работал над исправлением модульного теста сегодня, я пытался использовать переключатель отладки из командной строки, и он не работал.

Вот что я пробовал:

  • Я подтвердил, что метод Debug () действительно вызывается (поместив после него System.Console.WriteLine ())
  • Я подтвердил, что сборка все еще в Debug
  • Я сделал чистую сборку
  • Я перезапустил Product Studio

Быстрый поиск в Google ничего не показал, а в документации API для .Net ничего не сказано о том, что эта функция работает неправильно. Итак ... есть идеи?

Ответы [ 4 ]

20 голосов
/ 29 апреля 2010

Я наконец понял, что происходит. По какой-то причине что-то изменилось на моей машине, так что просто вызвать Debugger.Debug было недостаточно (все еще не понимаю, что изменилось). В любом случае, теперь я могу вызвать запуск отладчика с помощью:

if (Debugger.IsAttached == false) Debugger.Launch();
2 голосов
/ 25 октября 2012

Я использовал debugger.launch() метод, и он внезапно перестал работать. используя

if (Debugger.IsAttached == false) Debugger.Launch(); 

также не вызывал отладчик. Я попытался сбросить настройки Visual Studio, и это сработало!

1 голос
/ 24 ноября 2017

Извлечено отсюда ( MSDN ) следующее примечание:

Начиная с net_v40_long, среда выполнения больше не контролирует запуск отладчика для метода M: System.Diagnostics.Debugger.Break, а вместо этого сообщает об ошибке подсистеме отчетов об ошибках Windows (WER). WER предоставляет множество настроек для настройки процесса создания отчетов о проблемах, поэтому на то, как WER реагирует на ошибку, влияет множество факторов, таких как версия операционной системы, процесс, сеанс, пользователь, машина и домен. Если вы получаете неожиданные результаты при вызове метода M: System.Diagnostics.Debugger.Break, проверьте настройки WER на вашем компьютере. Для получения дополнительной информации о настройке WER см. Параметры WER https://msdn.microsoft.com/library/windows/desktop/bb513638.aspx. Если вы хотите убедиться, что отладчик запускается независимо от настроек WER, обязательно вызовите метод M: System.Diagnostics.Debugger.Launch.

Я думаю, что это объясняет обнаруженное поведение.

0 голосов
/ 19 марта 2010

Вы используете VS 2008 SP1? У меня было много проблем с отладкой в ​​этом выпуске, и все они были решены этим Microsoft patch .

Точки останова, помещенные в петли или в рекурсивные функции не попадают во все процессы на каждой итерации. Часто некоторые процессы могут проходить через многократные итерации цикла, игнорируя точку останова, перед процесс остановлен.

Точки останова поражены, но они не отображается при отладке нескольких процессы в Visual Studio отладчик.

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

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