Как проверить этот кусок этого массива в gdb?

Я участвую в сеансе отладки GDB, и у меня массив длиной 20 000. Большинство элементов равны нулю, но есть пара из них вокруг индекса 10000, который представляет интерес. К сожалению, когда я говорю p the_array[10000]@30 или что-то, что я получаю, "только значения в памяти могут быть расширены с помощью" @". Как я могу визуализировать область этого массива без необходимости вручную запрашивать каждый индекс в диапазоне примерно 40-50 элементов?

Ответ 1

Я бы ожидал, что это сработает. И это работает для меня. У меня есть эта небольшая программа:

int x[10000];

Теперь в gdb:

(gdb) p x[50]@3
$2 = {0, 0, 0}

В вашем вопросе отсутствует много деталей. Возможно, у вашего gdb есть ошибка. Или, может быть, ваш массив в каком-то отношении странный. Может быть интересна версия gdb и такие вещи, как "whatis the_array".

Ответ 2

Похоже, мы не можем использовать адреса для расширения областей памяти

(gdb) p (struct tfc *)[email protected]
Only values in memory can be extended with '@'.

Но это работает нормально

(gdb) p *tfc->[email protected]
$87 = {0x0 <repeats 49 times>, 0x7f3b63a1b060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f3b21816c90, 0x0 <repeats 18 times>, 0x7f3ae97f9e80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f3b49c96760, 0x0 <repeats 14 times>, 0x7f3adb16d8f0}