【问题标题】:Does LLDB have convenience variables ($var)?LLDB 是否有便利变量 ($var)?
【发布时间】:2012-06-26 21:30:14
【问题描述】:

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

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

【问题讨论】:

  • 我没有看到任何证据表明它确实如此。它的网站是lldb.llvm.org,他们有邮件列表,也许你可以直接问维护者。

标签: lldb


【解决方案1】:

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

用户定义的变量: 为方便起见,您可以定义自己的变量或在后续表达式中使用。 您定义它们的方式与在 C 中定义变量的方式相同。如果 您的用户定义变量是 $,那么该变量的值将在未来可用 表达式,否则它只会在当前表达式中可用。

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

【讨论】:

  • 有谁知道是否有一个函数可以在会话期间列出以这种方式定义的任何变量?那将非常方便。类似expr list...
【解决方案2】:

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

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

等等。我发现如果你不嵌套任何调用,LLDB 效果最好,并且你在每个调用中明确地给出一个返回类型。

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

【讨论】:

    【解决方案3】:

    只需使用表格:

    (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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      相关资源
      最近更新 更多