2016-04-27 8 views
3

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]?

+0

wenn 'Daten [Länge]' ist ' '\ 0'' dann die meisten Debugger beoind der \ 0 nichts zeigen. –

+0

Leider hat dieser alte Code, an dem ich arbeite, nicht immer Strings beendet. Ich weiß, ein bisschen gruselig. –

+0

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). –

Antwort

8

Dadurch wird die Länge des Strings im Debugger begrenzen:

<Type Name="MyData"> 
    <DisplayString>{data,[length]su}</DisplayString> 
</Type> 
Verwandte Themen