Как отобразить диапазон массива с помощью указателя в окне просмотра IAR IDE?

В IAR Embedded Workbench у меня есть указатель, указывающий на буфер в памяти. Наблюдая за указателем, я вижу содержимое слова, на которое он указывает. Как я могу указать представлению Watch отображать диапазон буфера, начиная с указателя, для элементов определенной длины?

Например, введите выражение:

myPtr[0..2]

отобразит информацию, эквивалентную трем выражениям:

myPtr[0]
myPtr[1]
myPtr[2]

person ysap    schedule 23.09.2014    source источник
comment
Хорошая идея, но я никогда не встречал отладчика, поддерживающего интерпретацию указателя как массива заданной пользователем длины. В таких ситуациях я обычно использую окно памяти, но это хорошо только для очень простых случаев.   -  person Clifford    schedule 24.09.2014
comment
@Clifford - я на 99,99% уверен, что вы можете сделать это с помощью MS Visual Studio. Конечно, это можно было сделать с прошлыми версиями.   -  person ysap    schedule 25.09.2014
comment
Это можно сделать буквально в каждом отладчике. IAR — первый из тех, что я видел, в котором нет этой функции.   -  person Dummy00001    schedule 22.01.2015
comment
@Clifford. В MSVS это можно сделать с помощью arrptr + offset, length для отображения значений от arrptr[offset] до arrptr[offset+length-1].   -  person ysap    schedule 22.01.2015


Ответы (2)


Из справки Iar Embedded Workbench (9.20):

В окнах, где вы можете редактировать поле «Выражение», и в окне «Быстрый просмотр» вы можете указать количество элементов, которые должны отображаться в поле, добавив точку с запятой, за которой следует целое число. Например, чтобы отобразить только три первых элемента массива с именем myArray или три элемента в последовательности, начиная с элемента, на который указывает указатель, напишите:

myArray;3

Чтобы отобразить три элемента, на которые указывают myPtr, myPtr+1 и myPtr+2, напишите:

myPtr;3

При необходимости добавьте запятую и другое целое число, указывающее, с какого элемента начинать. Например, чтобы отобразить элементы 10–14, напишите:

myArray;5,10

Чтобы отобразить myPtr+10, myPtr+11, myPtr+12, myPtr+13 и myPtr+14, напишите:

myPtr;5,10
person spoorcc    schedule 22.02.2018
comment
Спасибо. AFAICT, это было добавлено после моего первоначального вопроса (2014 г.). Я рад, что IAR обратился к этому вопросу. У меня давно нет этого инструмента, поэтому я не могу сам проверить ваш ответ, но, учитывая, что это выдержка из справки инструмента, я предполагаю, что он правильный. - person ysap; 23.02.2018

Альтернативой может быть просмотр в памяти. Выберите View -> Memory и введите значение указателя (с префиксом 0x). Вы можете просматривать и редактировать диапазон данных. Может быть, не так «чисто», как традиционный просмотрщик переменных отладчика, но он делает свою работу.

person cutofmyjib    schedule 16.06.2015