Kann ich die Anzahl der Ziffern, die in Debugger-Fenstern für Float- und Double-Variablen angezeigt werden, kontrollieren?

8

In Visual Studio 2012 suche ich nach einer Möglichkeit, die Standardanzeige von Fließkommatypen in den Fenstern "Autos", "Locals" und "Watch" anzupassen. Ich bin mit dem Native Visualizer (Natvis) -Dienstprogramm vertraut, sehe jedoch keine Debugger-Formatierungsfunktionen, um dies zu erreichen. Ebenso ist mir keine Möglichkeit bekannt, die Standardanzeige primitiver Typen zu überschreiben (abgesehen von der Aktivierung von hex).

Das Ziel wäre, Zeichenketten mit weniger Ziffern zu erstellen, die für Typen entsprechend Punkten, geometrischen Vektoren usw. erweitert werden, aber immer noch die ganze Genauigkeit zeigen, wenn ich die Typen expandiere. So könnte ich zum Beispiel eine Variable eines Punkttyps als (0.000, 1.234, 2.429) anstelle von m_x = 0.00000000, m_y = 1.234245213... in der mittleren Spalte des Autos-Fensters haben.

Ich habe die Formatangaben auf dieser Seite durchgesehen, aber nicht Ich sehe keinen Weg, die Fließkomma-Genauigkeit zu steuern.

    
Jay Carlton 19.12.2013, 19:39
quelle

5 Antworten

2

Leider gibt es wirklich keine Möglichkeit, dieses feinkörnige Niveau einer Änderung im C ++ - Debugging zu machen. In einer verwalteten Sprache wäre es in einigen begrenzten Szenarien möglich (wenn die Grundelemente Felder von Objekten wären und mit speziellen [DebuggerDisplay] -Attributen versehen wären). Für C ++ ist diese Art der Anpassung jedoch nicht vorhanden.

    
JaredPar 19.12.2013, 20:40
quelle
9

Obwohl es in deren Dokumentation nicht erscheint, haben wir das verwendet folgende Definition, um die Zahlen zu verkürzen (in VS 2015):

%Vor%     
Ben 07.04.2016 16:23
quelle
2

Primitive Typen können derzeit nicht NatVizzed sein. Wenn die spezifischen Grundelemente, die Sie betrachten möchten, jedoch Mitglieder eines anderen Typs sind, den Sie ansehen können, können Sie eine Formatierung auf diesen Typ anwenden, z. B.

%Vor%     
Overlord Zurg 28.10.2014 16:50
quelle
1

Die einzige mir bekannte Möglichkeit, dies zu tun, besteht darin, eine native Visualizer-DLL zu schreiben. Siehe diese Antwort auf die Frage "Wie schreibe ich eine benutzerdefinierte systemeigene Visualizer-DLL für Visual Studio 2012-Debugger?" .

>

Ich habe erfolgreich diese und die in dieser Antwort verknüpften Quellen verwendet, um benutzerdefinierte Visualizer zu schreiben, die Gleitkommaelemente verschiedener Typen mit der von mir gewünschten Genauigkeit anzeigen.

    
Guy Bolton King 03.12.2015 12:39
quelle
0

Sie haben nicht viel Kontrolle darüber. Wir konnten etwas wenig etwas besser als die Standardansicht erreichen, indem wir unsere Doublets für die Vorschau in Floats umwandeln:

<DisplayString>{{x={(float)x} y={(float)y}}}</DisplayString>

Wir haben sie als Doppel in der ungefalteten Version gelassen, damit Sie die wahren Werte sehen können. Das war genug für uns, um vier oder fünf Werte horizontal statt der üblichen drei zu packen. Dies hat immer noch einige Nachteile: Die letzten paar Ziffern auf dem Float werden unbrauchbar sein und könnten Sie glauben lassen, Sie hätten Präzisionsfehler, obwohl Sie das nicht tun. Bis Microsoft jedoch dazu kommt, richtige Formatierungsangaben für die numerische Ausgabe hinzuzufügen, ist dies vielleicht das Beste, was wir tun können.

Übrigens können Sie wahrscheinlich eine ähnliche "zerhackte Präzision" erhalten, wenn Sie Ihre Floats auf Ints setzen, wenn die Werte normalerweise groß genug sind.

    
AHelps 16.01.2015 23:55
quelle