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