LLDB是否具有方便的变量($var)?

49

我没有看到任何证据表明它有这个功能。它的网站是http://lldb.llvm.org/,他们有邮件列表,也许你可以直接问维护者。 - Kevin Grant
4个回答

63
我最终自己想出来了。在LLDB中运行help expr,您会看到:

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

因此,expr int $foo = 5 就是我想要的。

2
有人知道在会话期间是否有列出以这种方式定义的任何变量的函数吗?那将非常方便。类似于 expr list 的东西... - Jonathan Crooke

31

今天我遇到了一些困难。以下是在LLDB中处理Objective-C变量的样子:

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

等等,我发现如果您不嵌套任何调用,并在每个调用上明确给出返回类型,则LLDB的效果最佳。

尽管如此,当我尝试使UIView上的initWithFrame:起作用时,我仍然会遇到分段错误。:/


9

只需使用表单:

(lldb) expr var

以下是他们的教程内容:

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

You can also call functions:

(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

2

对于Swift版本

e let $data = Data()

po $data

输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接