Как добавить выражение, чтобы увидеть диапазон памяти, используя окно просмотра в затмении? - PullRequest
1 голос
/ 29 мая 2011

MySQL имеет следующий код:
таблица-> файл-> ha_write_row (таблица-> запись [0]))

где таблица-> запись [0] - это буфер, размер которого равенопределяется другой переменной длины.Теперь я знаю повторную длину, видим, что она равна 203. И я хочу увидеть значение (таблица-> запись [0]) [0..202], которое означает от первого байта до последнего байта.Если я просто добавлю (table-> record [0]) в часы, он отобразит только несколько символов, так как внутри table-> record [0] много 0, скажем, что это может быть как "xxx \\ 0 \\ 0 \"\ 0yyy ... ", в этом случае eclipse показывает только" xxx "в окне просмотра, поскольку думает, что" xxx \ 0 "- полная строка, оканчивающаяся на" \\ 0 ", но на самом деле я хочу увидеть больше значений буфера,Поэтому я использовал (table-> record [0]) [i] в ​​часах, i - 0, 1, 2 .., но это скучно, есть ли какой-нибудь хороший способ увидеть их все?

1 Ответ

3 голосов
/ 29 мая 2011

Используйте синтаксис gdb для печати значений массива, для массива, первый элемент которого указан указателем p, используйте:

p@100

Чтобы увидеть первые 100 элементов.В вашем случае отредактируйте ваше выражение для часов (щелкните левой кнопкой мыши -> Edit Watch Expression) так:

table->record@100

Вы не упомянули тип table->record --- Я предполагаю, что он содержит указатель (а не указатель на указатель).

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

...