2016-04-27 4 views
3

У меня структура пользовательских данных, проведение char* буфера с двумя длинами, связанный: максимальное и фактической длиной:Предельного отображение полукокса * в natvis файл на определенную длину

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

В Visual Studio (2015) визуализатор отладчика. Я хочу только отображать первые length элементы буфера data, а не оставшиеся элементы (обычно неинициализированные).

Я следующее правило в моем пользовательском файле .natvis для отображения моих пользовательских структур данных:

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

Можно ли отображать только data как «su» закодирована строкой из data[0] в data[length-1]?

+0

если 'данные [длина]' 'это '\ 0'' то ​​большинство отладчиков ничего не будет beoind в \ 0 показать. –

+0

К сожалению, этот унаследованный код, над которым я работаю, не всегда завершает строки с \ 0. Я знаю, немного страшно. –

+0

Тогда я не вижу, как отладчик должен знать длину в использовании - это длина. То, что вы можете сделать, заключается в том, что при распределении памяти нулевое значение (используйте 'calloc' ot' memset'), поэтому будет '\ 0' (если« данные »не используются повторно с разной длиной в использовании). –

ответ

8

Это ограничит длину строки в отладчике:

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

 Смежные вопросы

  • Нет связанных вопросов^_^