Ответ 1
Спасибо за ваши намеки. Наконец, я установил VS 2012, и отладчик теперь ведет себя как обычно. Кажется, что в отладчике Visual Studio 2010 есть проблема с ошибкой/производительностью.
Проблема:
Всякий раз, когда я пытаюсь сломать или установить точку трассировки в отладчике, наше приложение и визуальная студия полностью замораживаются. После отсоединения отладчика приложение продолжается.
Эта проблема, вероятно, связана с WPF. Мы перенесли наше приложение WinForm в WPF. С тех пор эта проблема возникает. Но им не удается найти определенную часть кода, вызывающего проблему. Я уже откатил сотни коммитов, но безуспешно.
Он также может быть связан с потоком пользовательского интерфейса. Если точка останова установлена где-то далеко от логики пользовательского интерфейса, приложение не замерзает или оно не будет зависеть так часто, как это происходит в потоке пользовательского интерфейса.
[ Edit:] Я использую Windows 7. 64-битный с Visual Studio 2010
[ Обновление:]
Когда Visual Studio зависает, и я пытаюсь отсоединиться до отображения точки останова, сообщение "Невозможно отсоединиться от одного или нескольких процессов. Все выдающиеся функции func-evals не завершены". Но я отключил всю функциональную оценку в параметрах отладки. Я думаю, что моя проблема вызвана func_evaluation, которая не может завершиться или наступает время ожидания.
Есть ли способ увидеть, на что висит func_evaluation визуальная студия?
Пример:
class SomeUiViewPresenterExample
{
private Timer m_Timer;
public void Init()
{
m_Timer = new Timer();
m_Timer.Elapsed += ElapsedFoo();
m_Timer.AutoReset = false;
m_Timer.Interval = 200;
}
private void ElapsedFoo(object sender, ElapsedEventArgs elapsedEventArgs)
{
// there is no code inside this method
// On the next line a trace point with "---> ElapsedFoo called" will freeze the debugger
}
Что я уже пробовал: (без успеха)
Вероятно, связанная с этим проблема:
Поскольку наше приложение использует .NET Remoting для связи с другим процессом, моя проблема заключается в том, что я похож на здесь. Я разместил все записи для удаленных событий в собственной задаче, но без успеха.
Отладочный вывод из отлаженной визуальной студии:
Я подключил отладчик к визуальной студии и заметил некоторые исключения, (80010005)
но я не знаю, насколько они важны для моей проблемы или нет:
(18d8.1708): C++ EH exception - code e06d7363 (first chance)
(18d8.1708): C++ EH exception - code e06d7363 (first chance)
..... // snip
(18d8.18dc): **Unknown exception - code 80010005 (first chance)
..... // 20 seconds freeze until breakpoint hit in IDE
(18d8.18dc): Unknown exception - code 80010005 (first chance)
(18d8.18dc): C++ EH exception - code e06d7363 (first chance)
ModLoad: 365f0000 36665000 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\mcee.dll
// after continue execution debugger and debugged process freezes forever
(18d8.18dc): Unknown exception - code 80010005 (first chance)
ModLoad: 00000000`02b90000 00000000`02c1c000 C:\Windows\SysWOW64\UIAutomationCore.dll
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
(18d8.1a8c): CLR exception - code e0434352 (first chance)
Спасибо за любые идеи или подсказки
Мануэль
Спасибо за ваши намеки. Наконец, я установил VS 2012, и отладчик теперь ведет себя как обычно. Кажется, что в отладчике Visual Studio 2010 есть проблема с ошибкой/производительностью.
Чем больше я смотрю на это, тем больше я подозреваю, потому что вы не используете таймер WPF. Если вы попытаетесь использовать обычный таймер, а не таймер диспетчера WPF, вы рискуете попытаться обновить пользовательский интерфейс в потоке, отличном от ui, что потенциально может быть причиной вашей проблемы (поскольку DataContext является частью UI технически).
Подробнее здесь:
DispatcherTimer против обычного таймера в приложении WPF для планировщика задач
Вы можете использовать инструмент windebug из этого ниже URL-адреса, чтобы лучше отлаживать и сортировать решение
http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx