(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)
Ответ 2
Вы можете использовать формат письма. Ссылка на документы GDB (работает и для LLDB): https://sourceware.org/gdb/current/onlinedocs/gdb/Output-Formats.html#Output-Formats
(lldb) p a
(unsigned long long) $0 = 10
(lldb) p/x a
(unsigned long long) $1 = 0x000000000000000a
Ответ 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
Работает как шарм.