2012-04-05 5 views

ответ

2

Я не могу найти его в документации, но, похоже, это то, как GDB отображает ссылки на переменные. Согласно backtrace, вы были остановлены методом класса, приняв 1 параметр по ссылке со следующей подписью: Driver::setRec(message&).

Обновление:
Не указано в @ в документации C++ Expressions. Единственное указано является:

В списке параметров отображаются при GDB отображает кадр, значение эталонных переменных не отображается (в отличии от других переменных); этот позволяет избежать помех, поскольку ссылки часто используются для больших структур. Адрес ссылочной переменной всегда отображается, если у вас нет , указанный «заданный адрес печати выключен».

0

Я не знаю, если это помогает, но от http://sources.redhat.com/gdb/download/onlinedocs/gdb.html#index-g_t_0040_0040_0040r_007b_002c-referencing-memory-as-an-array_007d-525

Часто полезно распечатывать несколько последовательных объектов одного и того же типа в памяти; раздел массива или массив динамически определенного размера, для которого в программе существует только указатель.

Вы можете сделать это, обратившись к непрерывному интервалу памяти как искусственный массив, используя двоичный оператор @'. The left operand of @ 'должен быть первым элементом желаемого массива и быть отдельным объектом. Правым операндом должна быть желаемая длина массива. Результатом является значение массива, элементы которого являются всеми типами левого аргумента. Первый элемент - фактически левый аргумент; второй элемент поступает из байтов памяти сразу после тех, которые содержат первый элемент, и так далее. Вот пример. Если в программе указано

Там, где я хотел бы интерполировать это 0x50, это адрес указателя на начало строки, где выводится сообщение. Если я найду дополнительную информацию об этом, я обновлю сообщение.

+2

Я не думаю, что это имеет значение. Оператор '@', который вы описываете, имеет два операнда, левый операнд и правый операнд. '@' В OP имеет только один. –

+0

Мой вывод все еще согласуется с консенсусом, хотя и другие примеры в нем ссылаются на какой-то указатель. –

0

его для печати последовательных адресов памяти, таких как массив.

$gdb *[email protected] 
${1,2,3,4,5,6,7,8,9,10} 

его менее мощный, но простой в использовании осмотр памяти. если вам нужно больше энергии, вы должны использовать команду x (изучить память). консультации

$info gdb 
+2

Я не думаю, что это имеет значение. Оператор @, который вы описываете, имеет два операнда, левый операнд и правый операнд. @ В OP имеет только один. –

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