Ich habe eine benutzerdefinierte Datenstruktur hat einen char*
Puffer mit zwei Längen zugeordnet halten: Maximal- und tatsächliche Länge:Grenzwertanzeige von char * in natvis Datei auf bestimmte Länge
struct MyData {
char* data;
int length;
int capacity;
};
Im Visual Studio (2015) Debugger Visualizer Ich möchte nur die ersten length
Elemente des data
Buffers anzeigen und nicht die (normalerweise nicht initialisierten) restlichen Elemente.
habe ich die folgende Regel in meiner benutzerdefinierten .natvis
Datei für meine benutzerdefinierte Datenstruktur anzuzeigen:
<Type Name="MyData">
<DisplayString>content="{data,su}" length={length}</DisplayString>
</Type>
Ist es möglich, nur Anzeige data
als „su
“ -encoded Zeichenfolge von data[0]
zu data[length-1]
?
wenn 'Daten [Länge]' ist ' '\ 0'' dann die meisten Debugger beoind der \ 0 nichts zeigen. –
Leider hat dieser alte Code, an dem ich arbeite, nicht immer Strings beendet. Ich weiß, ein bisschen gruselig. –
Dann sehe ich nicht, wie ein Debugger zu wissen, die Länge ist in Verwendung "Länge". Was Sie tun können, ist, wenn Sie den Speicher reservieren, setzen Sie ihn auf Null (benutzen Sie 'calloc' oder' memset'), so dass es ein '\ 0' gibt (sofern'data' nicht mit unterschiedlichen Längen verwendet wird). –