LLDB是否有便利变量($ var)?

时间:2012-06-25 15:37:48

标签: lldb

LLDB是否有convenience variables?如果是这样,我该如何使用它们?如果不是,是否有类似的东西可以使用?

参考:http://software.intel.com/sites/products/documentation/hpc/atom/application/debugger/commands143.html

3 个答案:

答案 0 :(得分:50)

我终于弄明白了。在LLDB中运行help expr,您会看到:

  

用户定义的变量:       为方便起见,您可以定义自己的变量,或者在后续表达式中使用。       您可以像在C中定义变量一样定义它们。如果是第一个字符       您的用户定义变量是$,那么变量的值将来可用       表达式,否则它只在当前表达式中可用。

所以expr int $foo = 5就是我想要的。

答案 1 :(得分:22)

今天我一直在努力。以下是在LLDB中处理Objective-C变量的样子:

expr UIApplication *$app = (UIApplication *)[UIApplication sharedApplication]
expr UIWindow *$keyWindow = (UIWindow *)[$app keyWindow]

等。我发现如果你没有嵌套任何调用,LLDB效果最好,并且你在每次调用时都明确给出了返回类型。

但是当我稍后尝试让initWithFrame:在UIView上工作时,我仍然遇到了分段错误。 :/

答案 2 :(得分:6)

只需使用表格:

(lldb) expr var

来自tutorial

(lldb) expr self
$0 = (SKTGraphicView *) 0x0000000100135430
(lldb) expr self = 0x00
$1 = (SKTGraphicView *) 0x0000000000000000
     

您也可以调用函数:

(lldb) expr (int) printf ("I have a pointer 0x%llx.\n", self)
$2 = (int) 22
I have a pointer 0x0.
(lldb) expr self = $0
$4 = (SKTGraphicView *) 0x0000000100135430