爲GDB訴LLDB命令中的標準基準是http://lldb.llvm.org/lldb-gdb.html
你想使用的計算表達式expr命令。它是採用「原始輸入」除了參數的LLDB命令之一,所以你經常需要用「 - 」表示,其中參數(以表達式)結束和指令(S)開始。例如
(lldb) expr -- [self setAlpha:1]
有一個快捷方式「p」,它爲你做了(但不允許任何參數),例如,
(lldb) p [self setAlpha:1]
如果你調用的功能(S)是不是你的計劃的一部分,你會經常需要這麼LLDB知道如何稱呼他們明確聲明他們的返回類型。例如
(lldb) p printf("hi\n")
error: 'printf' has unknown return type; cast the call to its declared return type
error: 1 errors parsing expression
(lldb) p (int)printf("hi\n")
(int) $0 = 3
hi
(lldb)
有一種整潔的方法來解決浮點參數問題,順便說一句。創建被添加到您的LLDB輸入的每一個表情,與原型的類方法「表達前綴」文件。舉例來說,我有一個MyClass類從NSObject的繼承,它有兩個感興趣的方法,「setArg:」和「GETARG」,確定,並得到一個浮動伊娃。這是一個愚蠢的小例子,但它顯示瞭如何使用它。下面是我對LLDB寫了一個前綴的文件:在我~/.lldbinit
文件
@interface NSObject
@end
@interface MyClass : NSObject
- init;
- setArg: (float)arg;
- (float) getArg;
@end
extern "C" {
int strcmp (const char *, const char *);
int printf(const char * __restrict, ...);
void puts (const char *);
}
我添加
settings set target.expr-prefix /Users/jason/lldb-prefix.h
,現在我能做的
(lldb) p [var getArg]
(float) $0 = 0.5
(lldb) p [var setArg:0.7]
(id) $1 = 0x0000000100104740
(lldb) p [var getArg]
(float) $2 = 0.7
你會發現我包括一對夫婦標準的C庫函數也在這裏。做完這些之後,我不需要再投射這些返回類型,例如
(lldb) p printf("HI\n")
<no result>
HI
(lldb) p strcmp ("HI", "THERE")
(int) $3 = -12
(爲 「<沒有結果>」 的事情一直致力於LLDB TOT源已修復)
有[在LLDB換GDB-users.txt](http://opensource.apple.com/source/lldb/lldb-69/docs/lldb-for-gdb-users一個例子。txt)for C:'expr(int)printf(「...」)'。也許你應該用'expr(type)'''方法調用前綴? – osgx