2016-12-22 6 views
0

Во время отладки с GDB у меня есть действительно большая переменная, которую я хотел бы распечатать. Однако должны быть напечатаны только первые n. Как я могу напечатать первые строки n с помощью команды «print» GDB? Как команда «head» в Linux.Как печатать первые n строк переменной с помощью GDB?

В частности, переменная представляет собой структуру/запись.

+0

«структура» означает «запись»? –

ответ

1

Если у вас есть GDB, который поддерживает Ada, и если предположить, что очень большой означает массив, то используйте срезы.

(gdb) p x(1..3) 
$2 = ((first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0)) 
(gdb) p x(1..5) 
$3 = ((first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0), (first => 0, second => 0)) 
(gdb) 

Если это запись, доступ компонентов приведет к снижению выходной:

(gdb) p y.x 
$2 = (a => 0 '["00"]', b => 0 '["00"]', c => 0 '["00"]', d => 0 '["00"]') 
(gdb) p y.x.a 
$3 = 0 '["00"]' 
(gdb) 

В противном случае, GDB, если работать с на линии оболочки командной, может трубы до более (1) на UNIX; изнутри Emacs становятся возможными все виды обработки вывода, поскольку GDB выводит текст.

+0

Переменная - это структура, поэтому нарезка не-массива невозможна:/ – YisasL

+0

«структура»? Что это? Массив булевых элементов? Запись? ...? –

+0

Это запись. Действительно, я хотел бы печатать как «головную» команду в Linux, а не элемент за элементом. – YisasL

Смежные вопросы