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

  • 本文关键字:var 变量 是否 LLDB lldb
  • 更新时间 :
  • 英文 :


LLDB有方便变量吗?如果是这样,我该如何使用它们?如果没有,我可以使用类似的东西吗?

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

我终于自己想通了。在LLDB中运行help expr,您将看到:

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

这就是我想要expr int $foo = 5

我今天为此苦苦挣扎。以下是在LLDB中处理Objective-C变量的样子:

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

等。我发现 LLDB 在不嵌套任何调用并且每次调用上显式给出返回类型时效果最好。

不过,当我稍后尝试在 UIView 上initWithFrame:工作时,我仍然遇到分段错误。

只需使用以下形式:

(lldb) expr var

从他们的教程中:

(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

对于 swift 版本

e let $data = Data()
po $data

输出:

▿ 0 bytes
  - count : 0
  ▿ pointer : 0x000000016d36d9d0
    - pointerValue : 6127278544
  - bytes : 0 elements

最新更新