(lldb) Печать без знака long long in hex

Я пытаюсь отладить мою программу Objective-C, и мне нужно напечатать мою переменную unsigned long long в шестнадцатеричном формате. Я использую отладчик lldb.

Чтобы напечатать short как hex, вы можете использовать это:

(lldb) type format add --format hex short
(lldb) print bit
(short) $11 = 0x0000

Однако я не могу заставить его работать для unsigned long long.

// failed attempts:
(lldb) type format add --format hex (unsigned long long)
(lldb) type format add --format hex unsigned long long
(lldb) type format add --format hex unsigned decimal
(lldb) type format add --format hex long long
(lldb) type format add --format hex long
(lldb) type format add --format hex int

Я запускаю приложение iOS на симуляторе, если это имеет значение.

Ответ 1

type format add ожидает имя типа как одно слово - вам нужно указать аргумент, если это несколько слов. например.

   2    {
   3      unsigned long long a = 10;
-> 4      a += 5;
   5      return a;
   6    }
(lldb) type form add -f h "unsigned long long"
(lldb) p a
(unsigned long long) $0 = 0x000000000000000a
(lldb) 

Ответ 3

Прочитав остальную часть документа я узнал, что можно сделать что-то вроде этого:

// ObjC code
typedef int A;

то

(lldb) type format add --format hex A

Это дало мне идею typedef unsigned long long BigInt:

// ObjC code
typedef unsigned long long BigInt;

то

(lldb) type format add --format hex BigInt

Работает как шарм.