debugging (lldb)打印unsigned long long in hex

3npbholx  于 2023-10-24  发布在  其他
关注(0)|答案(3)|浏览(162)

我正在调试我的lldb程序,我需要用十六进制打印我的unsigned long long变量。我正在使用lldb调试器。
为了将short打印为十六进制,you can use this

(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应用程序,如果这有什么区别的话。

evrscar2

evrscar21#

您可以使用格式信件。链接到GDB文档(也适用于LLDB):https://sourceware.org/gdb/onlinedocs/gdb/Output-Formats.html#Output-Formats

(lldb) p a
(unsigned long long) $0 = 10
(lldb) p/x a
(unsigned long long) $1 = 0x000000000000000a
bmvo0sr5

bmvo0sr52#

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)
qvtsj1bj

qvtsj1bj3#

在阅读了document的其余部分之后,我发现可以这样做:

// 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

很管用。

相关问题