2013-02-07 26 views
10

Il problema:Visual Studio 2010 si blocca sul punto traccia

Ogni volta che provo a rompere o impostare un Trace-point nel debugger, la nostra applicazione e Visual Studio si blocca completamente. Dopo aver scollegato il debugger, l'applicazione continua.

Questo problema è probabilmente correlato a WPF. Abbiamo migrato la nostra applicazione WinForm a WPF. Da allora questo problema si verifica. Ma non sono in grado di trovare la parte specifica del codice che causa il problema. Ho già recuperato centinaia di commit ma senza successo.

Potrebbe anche essere correlato al thread dell'interfaccia utente. Se il punto di interruzione è impostato da qualche parte lontano dalla logica dell'interfaccia utente, l'applicazione non si bloccherà o non si bloccherà tutte le volte che si trova nel thread UI.

[Edit:] Io uso Windows 7. 64bit con Visual Studio 2010

[Aggiornamento:]

Quando Visual Studio si blocca, e cerco di staccare prima che venga visualizzato il punto di interruzione , il messaggio "Impossibile disconnettere da uno o più processi." Tutte le funzioni funzionali non eseguite non sono state completate ". Ma ho disabilitato tutte le funzioni di valutazione nelle opzioni di debug. Penso che il mio problema sia causato da una func_evaluation che non può essere completata o che viene eseguita in un timeout.

C'è un modo per vedere su quale func_evaluation è sospeso lo studio visivo?

Esempio:

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 
} 

Quello che ho già provato: (senza successo)

  • abilitare/disabilitare il processo host
  • cercato di mettere a punto x86 e x64 processi
  • lanciato studio visivo con/SafeMode
  • NGEN aggiornamento
  • disabile "valutazione di proprietà e l'altra funzione implicita chiama" nelle opzioni di debug
  • simbolo server disabili
  • simbolo disabilitato carico
  • cancellato cache dei font WPF
  • segnalati diversi elementi dell'interfaccia utente con 'DebuggerDisplay ("un testo privo di espressione")'

(Ticket Microsoft Connect)

problema Probabilmente correlate:

Perché la nostra applicazione utilizza .NET Remoting per comunicare con un altro processo, il mio problema mio essere qualcosa di simile a here. Ho inserito tutte le registrazioni in eventi remoti in una propria attività, ma senza successo.

Debugger uscita dal debug Visual Studio:

Ho allegato un debugger per Visual Studio e ho osservato alcune eccezioni, (80.010.005)

ma non ho idea di wheter sono rilevanti per il mio problema o no:

(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) 

Grazie per tutte le idee o suggerimenti

Manuel

+0

Solo un piccolo punto. Se utilizzi WPF, usa "System.Windows.Threading.DispatcherTimer' (il timer WPF) non il timer generale C#. Non so se questo risolverà il problema però. – sircodesalot

+0

Grazie per il suggerimento. Ma in questo caso l'operazione non dovrebbe essere eseguita sul thread dell'interfaccia utente. Questa operazione dovrebbe essere eseguita su un thread separato, poiché aggiorna solo il contesto dei dati (richiede un po 'di tempo) e attiva l'evento modificato della proprietà. –

+0

Quale versione di Visual Studio? – OmegaMan

risposta

1

Grazie per i vostri suggerimenti. Finalmente ho installato VS 2012 e il debugger ora si comporta normalmente. Sembra che ci sia davvero un problema di bug/prestazioni nel debugger di Visual Studio 2010.

1

Più guardo a questo, più sospetto che sia perché non stai usando il timer WPF. Se si tenta di utilizzare la normale classe Timer piuttosto che il timer WPF Dispatcher, si rischia di tentare di aggiornare l'interfaccia utente su un thread non-ui, che potrebbe essere la causa del problema (Poiché DataContext è parte del UI tecnicamente).

Maggiori informazioni qui:

DispatcherTimer vs a regular Timer in WPF app for a task scheduler

+0

No, penso che sia corretto aggiornare il contesto dati da un thread non dell'interfaccia utente. –

+0

Giusto, ma quando dici: "if (null! = DataContext)", sembra che tu stia effettivamente colpendo la proprietà view.DataContext e non solo il datacontext stesso. Prova a prendere quella linea e guarda cosa succede. – sircodesalot

+0

Oppure prova anche solo a usare un timer di dispatcher e vedi se questo non risolve il problema. Il tuo codice può rimanere quasi identico, basta cambiare il nome del timer in System.Windows.Threading.DispatcherTimer. Se questo è il caso, allora puoi ancora eseguire il codice su un altro thread, dovrai solo usare 'Invoke' quando vuoi apportare le modifiche finali all'oggetto UI (es. Spostare l'esecuzione sul thread principale) . – sircodesalot

Problemi correlati