2009-04-24 13 views
34

Ich habe mehrere Visual Studio-Debugger Visualizer erfolgreich gemacht, und sie arbeiten sehr gut, dass mit Ausnahme einiger Objekte ich eine Auszeit Fehler, wenn ich versuche, mit objectProvider.GetObject()Wie verhindert man, dass Visual Studio-Debugger-Visualizer auslaufen?

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

Die Zeit, um das Objekt zu deserialisieren Das passiert ziemlich schnell (vielleicht etwa eine Sekunde nachdem ich auf das Visualizer-Icon geklickt habe), obwohl einige meiner anderen Visualizer auch mit großen Datenobjekten funktionieren, die viel länger angezeigt werden (5-10 Sekunden) und immer noch kein Timeout haben.

Ich habe bereits eine benutzerdefinierte Objektquelle erstellt, um die Serialisierung auf die Felder zu beschränken, die ich anzeigen muss. Was kann ich noch tun, um die Daten ohne Zeitlimit zu deserialisieren?

Antwort

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

Ich denke, das ist nicht dokumentiert, aber man kann versuchen, einige der Timeouts in dem oben genannten Registrierungsschlüssel, und starten Sie Visual Studio ändern.

+24

Sieht aus wie 'NormalEvalTimeout' ist der Wert zu ändern (Wert wird in Millisekunden angegeben). 'QuickwatchTimeout' ist ebenfalls eine Aktualisierung wert, wenn Sie diese Funktion verwenden (wenn Sie den Mauszeiger über eine Variable im Debugger bewegen, um deren aktuellen Wert anzuzeigen). Die Standardwerte für diese Werte sind 5000 bzw. 15000, wenn Sie sie wiederherstellen müssen. – alastairs

+3

Wie bei anderen Registrierungsschlüsseln stellen Sie sicher, dass Visual Studio geschlossen ist (keine 'devenv' Prozesse werden ausgeführt) oder VS überschreibt den Wert beim Beenden! – ashes999

5

ich vor kurzem durch das in VS2012 getroffen wurde und ich fand this nach googeln:

Wie die Meldung Ausnahme sagt, bedeutet dies Ausnahme der Debugger Visualizer für die Datentabelle lange abgelaufen ist. In VS-Debugger hat jeder Ausdruckauswertungsfenster (wie Watch-Fenster, lokale Fenster, Datatips, Autos Fenster etc ..) verschiedene Standard-Max-Ausdruck Bewertung Zeitüberschreitung Wert. Für Datatip bevorzugen wir es, einen kurzen Timeout-Wert anzugeben, da andernfalls ein schlechter Benutzer Ausdruck bereitgestellt wird. Wenn Sie die Visualizer-Funktionalität für diese Datentabelle verwenden möchten, können Sie den Ausdruck einer Uhr hinzufügen und versuchen, ihn zu visualisieren (weil das Überwachungsfenster einen längeren Zeitüberschreitungswert hat). Wenn Sie dieses Zeitlimit in Datatip loswerden möchten, können Sie versuchen, den Timeout-Wert für Datenübernahmedaten zu erhöhen. Der Timeout-Wert ist eine Einstellung in "DataTipTimeout" Registrierungsschlüssel unter: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 10.0 \ Debugger Hinweis: sollten Sie WOW64Node für 64-Bit-Betriebssystem testen. Sie können unter diesem Schlüssel auch den Standard-Zeitüberschreitungswert für andere Windows-Fenster sehen.

0

Um Visual Studio-Debugger funktionieren gut - "Locals" Fenster in "WPF-Visualizer" (in WPF-Anwendung getestet), müssen Sie in der Registrierung finden: HKEY_CURRENT_USER \ Software \ Microsoft \ Visualstudio \ 12.0 \ Debugger \ DWORD-Parameter "LocalsTimeout" und Standardwert (1000) auf einen ausreichend hohen Wert, z. B. 5000, eingestellt.

Verwandte Themen