Указать размер номера в gdb для команд печати?

#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 — это, а приведение — это способ изменить тип любого выражения.