#c #gdb
#c #gdb
Вопрос:
Чтобы поиграть с различными добавлениями к регистрам, которые могут составлять 8,4,2 или 1 байт ( rax
, eax
, ax
, al
), есть ли способ указать количество байтов используемого мной числа? Например
# works for 4 bytes
>>> p/x -1
$30 = 0xffffffff
>>> p/x 1
$31 = 0x1
>>> p/d 0xffffffff
$34 = -1
# can I get it to work for one byte, signed char?
>>> p/d 0xff
$35 = 255
Ответ №1:
Простой способ — использовать приведение, чтобы сообщить gdb тип значения.
(gdb) p /d (char)0xff
$2 = -1
Комментарии:
1. спасибо, не могли бы вы, пожалуйста, сослаться на часть в документах, которая немного объясняет это, если она есть? Я пытался
help x
,help p
но не нашел слишком большой помощи.2. Насколько я знаю, на самом деле это не задокументировано очень явно. Команды для проверки данных работают с выражениями . Выражение находится в контексте отлаживаемого языка. В этом случае тип по умолчанию для C
int
— это, а приведение — это способ изменить тип любого выражения.