(lldb)以十六进制打印无符号长整型

时间:2012-09-19 08:39:35

标签: objective-c debugging hex lldb unsigned-long-long-int

我正在尝试调试Objective-C程序,我需要以十六进制打印我的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应用程序,如果这有任何区别。

3 个答案:

答案 0 :(得分:31)

您可以使用格式字母。链接到GDB文档(也适用于LLDB):http://www.delorie.com/gnu/docs/gdb/gdb_55.html

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

答案 1 :(得分:10)

type format add期望类型名称为单个单词 - 如果是多个单词,则需要引用该参数。 e.g。

   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 :(得分:1)

在阅读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

像魅力一样。