Как посмотреть динамический массив С++ с помощью gdb?

Рассмотрим следующий пример:

int size = 10, *kk = new int[size];

for (int i = 0; i < size; i++) {
    kk[i] = i;
}

delete [] kk;

Как я могу добавить часы для всего массива? Я могу добавить часы один за другим (kk[0],kk[1]...), но поскольку я знаю длину массива, есть ли способ сделать это автоматически? Я имею в виду что-то вроде kk[0..size-1] или около того.

Я использую IDE NetBeans вместе с cygwin g++ и gdb.


person Keiji    schedule 30.10.2009    source источник
comment
Редактирование на английском языке немного меняет смысл вопроса, но @‹size› в выражении работает как для команд отображения, так и для команд печати.   -  person Matt K    schedule 30.10.2009
comment
Вы хотите просмотреть его (перерыв на чтение/запись) или распечатать его всякий раз, когда GDB останавливается?   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 27.07.2015
comment
Чтобы просмотреть (разбить) весь массив: stackoverflow.com/questions/11004374/   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 27.07.2015


Ответы (1)


Попробуйте display *kk@<size> Из документа для команды печати:

@ — это бинарный оператор для обработки последовательных объектов данных в любом месте памяти как массива. FOO@NUM дает массив, первым элементом которого является FOO, второй элемент которого хранится в пространстве, следующем за местом хранения FOO, и т. д. FOO должно быть выражением, значение которого находится в памяти.

person Matt K    schedule 30.10.2009
comment
Я предпочитаю использовать p вместо display, так как его легче набирать. Я добавил это как отдельный ответ здесь. - person Debajit; 27.10.2010
comment
print и display не являются одной и той же командой. display устанавливает наблюдение за переменной, поэтому вы видите ее каждый раз, когда получаете приглашение, предполагая, что переменная находится в области видимости. - person Matt K; 27.10.2010
comment
@ Мэтт, ты прав. Я не видел, что вопрос был о просмотре переменной. Я удалил свой вводящий в заблуждение ответ. Спасибо, что указали на это. - person Debajit; 02.11.2010
comment
Да, редактор вопроса на самом деле изменил смысл. Наверное, мне следует изменить его обратно, чтобы я не выглядел шутом. - person Matt K; 03.11.2010
comment
@mkb, ты имеешь в виду display *kk@size? Учитывая, что size — это переменная, которую вы хотите использовать. - person Erik B; 30.06.2011
comment
На самом деле я хотел использовать буквальный размер массива. Я не понимал, что вы можете использовать переменную там. Документ, который я цитировал, подразумевает, что необходим литерал. Я не читал раздел в руководстве GDB о выражениях, прежде чем ответить. - person Matt K; 30.06.2011