如何在Xcode中使用LLVM进行debugging时更改variables值?

在Xcode中,GDB允许您在debugging时更改局部variables(请参阅在XCode中debugging时如何更改NSString值 )。 LLDB是否提供类似的function? 如果是这样,我们该如何使用它?

expr myString = @"Foo" 

(lldb)帮助expr
在当前程序上下文中使用当前位于范围内的variables评估C / ObjC / C ++expression式。 这个命令需要'原始'input(不需要引用的东西)。

语法:expression式 –

命令选项用法:expression [-f] [-G] [-d] [-u] – expression式[-o] [-d] [-u] – expression式

  -G <gdb-format> ( --gdb-format <gdb-format> ) Specify a format using a GDB format specifier string. -d <boolean> ( --dynamic-value <boolean> ) Upcast the value resulting from the expression to its dynamic type if available. -f <format> ( --format <format> ) Specify a format to be used for display. -o ( --object-description ) Print the object description of the value resulting from the expression. -u <boolean> ( --unwind-on-error <boolean> ) Clean up program state if the expression causes a crash, breakpoint hit or signal. 

例子:

expr my_struct-> a = my_array [3]
expr -f bin – (index * 8)+ 5
expr char c [] =“foo”; C [0]

重要提示:由于此命令采用“原始”input,如果使用任何命令选项,则必须在命令选项结尾和原始input开始之间使用“ – ”。

“expr”是“expression式”的缩写

以下的东西适合我。 我正在使用Xcode 8。

如果你想设置一些variables(例如“dict”)为零,然后testing代码stream,你可以尝试下面的代码。

  1. 将初始化后的断点正确放置到所需的值。
  2. 然后在lldb命令行中执行“expression dict = nil”来改变它。 (例如“无”)
  3. 跨越中断点。
  4. 检查下一行中的variables“dict”。 这将是零。

它将看起来像在控制台中。

 (lldb) expression dict = nil (NSDictionary *) $5 = nil