2010-03-19 5 views
9

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

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

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

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

ответ

17

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

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

Я столкнулся с этой же проблемой, перейдя с Visual Studio 2008 на Visual Studio 2010. 'Debugger.Break()' отлично работал в VS2008, для VS2010 я теперь использую 'Debugger.Launch()'. –

+0

То же самое в VS2015 - Debugger.Break() не работает - Debugger.Launch() работал – chenop

0

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

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

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

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

+0

Извините ... после установки патча я все еще вижу проблему. :-( –

2

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

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

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

0

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

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

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

Смежные вопросы