Там нет консервированного способа сделать это. Было бы здорово, если бы вы могли ввести print *(*p @ 23)
- используя расширение @
внутри другого выражения, в результате чего неявный цикл, но вы не можете.
Однако есть два достойных способа сделать это.
Один из способов сделать это - использовать Python. Что-то вроде:
(gdb) python x = gdb.parse_and_eval('my_array')
(gdb) python
> for i in range(nnn):
> print x[i].dereference()
> end
Вы можете обернуть это в новой команде GDB, написанный на Python, довольно легко.
Другой способ - использовать define
, чтобы создать собственную команду с использованием командного языка gdb. Это немного уродливее и имеет некоторые (незначительные) ограничения по сравнению с подходом Python, но это все еще возможно.
Наконец, когда-то существовало расширение gdb под названием «дуэль», обеспечивающее эту функцию. К сожалению, он никогда не сливался.
Каков тип данных самого списка? –
Контейнер Roguewave –