2012-09-19 253 views
7

我想調試我的Objective-C程序,並且需要在十六進制中打印unsigned long long變量。我正在使用lldb調試器。(lldb)打印無符號long long in hex

爲了打印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應用程序,如果這有什麼區別。

回答

7

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

then,

(lldb) type format add --format hex BigInt 

工程就像一個魅力。

24

您可以使用格式字母。鏈接到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 
+2

注意,而在gdb的'p'和'/ x'之間接受空間,LLDB沒有,所以'P /在gdb x'工作,但在lldb中它必須是'p/x'。 –