2016-04-27 8 views
3

私は、関連する2つの長さでchar*バッファを保持するカスタムデータ構造を持っている:最大と実際の長さ:Visual Studioの(2015)ではリミット表示

struct MyData { 
    char* data; 
    int length; 
    int capacity; 
}; 

デバッガビジュアライザー私はdataバッファの最初のlength要素を表示し、残りの要素は(通常は初期化されていない)表示しません。

私は私のカスタムデータ構造を表示するための私のカスタム.natvisファイルに次のルールをしました:

<Type Name="MyData"> 
    <DisplayString>content="{data,su}" length={length}</DisplayString> 
</Type> 

data[0]からdata[length-1]に「su」でエンコード文字列としてのみ表示dataにそれは可能ですか?

+0

'データ[長さ]' 'であれば '\ 0''その後、ほとんどのデバッガが\ 0 beoindは何も表示されません。 –

+0

残念ながら、私が取り組んでいるこのレガシーコードは、常に\ 0終了文字列ではありません。私は知っている、少し怖い。 –

+0

次に、デバッガがlength-in-useが 'length'であることを知る方法はわかりません。あなたができることは、メモリを割り当てるときにゼロ( 'calloc' ot' memset'を使用して) '\ 0'(' data'が異なる長さで再使用されない限り)があることです。 –

答えて

8

これは、デバッガ内の文字列の長さを制限します:

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