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