2009-04-24 4 views
34

ho fatto con successo diversi visualizzatori del debugger di Visual Studio, e che stanno lavorando molto bene, tranne che in alcuni oggetti ottengo un time out di errore quando provo a deserializzare l'oggetto con objectProvider.GetObject()Come impedire il timeout dei visualizzatori di debug di Visual Studio?

System.Exception: Function evaluation timed out. 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.PrivateCallback.MaybeDeserializeAndThrowException(Byte[] data) 

Il tempo l'uscita avviene abbastanza rapidamente (forse circa un secondo dopo aver fatto clic sull'icona del visualizzatore), anche se alcuni degli altri miei visualizzatori funzionano bene anche con oggetti di dati di grandi dimensioni che sono molto più lunghi da visualizzare (5-10 secondi) e continuano a non scadere.

Ho già creato un'origine dell'oggetto personalizzata per limitare la serializzazione ai campi che devo visualizzare. Cos'altro posso fare per far deserializzare i dati senza scadere?

risposta

41
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger 

credo che questo non è documentato, ma si può provare a cambiare alcuni dei timeout nella chiave di registro sopra, e riavviare Visual Studio.

+24

Sembra che "NormalEvalTimeout' sia il valore da modificare (il valore viene specificato in millisecondi). 'QuickwatchTimeout' vale anche l'aggiornamento se si utilizza questa funzione (passando con il mouse su una variabile nel debugger per visualizzare il valore corrente). I valori predefiniti per questi valori sono rispettivamente 5000 e 15000 se è necessario ripristinarli. – alastairs

+3

Come con altre chiavi di registro, assicurati che Visual Studio sia chiuso (nessun processo 'devenv' in esecuzione), o VS sovrascriverà il valore quando esci! – ashes999

5

Recentemente sono stato colpito da questo in VS2012 e dopo googling ho trovato this:

Come dice il messaggio di eccezione, questa eccezione significa che il visualizzatore debugger per DataTable è scaduta. Nel debugger VS, ciascuna finestra di valutazione dell'espressione (come la finestra dell'orologio, la finestra dei locali, i dati , la finestra delle macchine automatiche ecc.) Ha un valore di timeout di valutazione massimo predefinito di espressione . Per datatip, preferiamo fornire un valore di timeout breve perché altrimenti fornirà un'espressione utente scadente . Se si desidera utilizzare la funzionalità visualizzatore per datatable, è possibile aggiungere l'espressione a un orologio e provare a visualizzare (poiché la finestra di controllo ha un valore di timeout più lungo). Se si desidera eliminare questo timeout nel datatip da , è possibile provare ad aumentare il valore di timeout per il datazip . Il valore di timeout è un'impostazione nella chiave di registro "DataTipTimeout" sotto: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 10.0 \ Debugger Nota: si dovrebbe sondare WOW64Node per sistema operativo a 64 bit. Sotto questo tasto è inoltre possibile vedere il valore di timeout predefinito di altre finestre .

0

a Visual Studio lavoro debugger bene - finestra "locali" in "WPF Visualizer" (testato in un'applicazione WPF), è necessario trovare nel Registro di sistema: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 12.0 \ Debugger \ Parametro DWORD "LocalsTimeout" e valore predefinito (1000) impostato su un valore abbastanza grande, 5000, ad esempio.