在Xcode中,GDB允许您在调试时更改局部变量(请参阅how to change NSString value while debugging in XCode?)。 LLDB是否提供类似的功能?如果是这样,我们如何使用它?
答案 0 :(得分:244)
expr myString = @"Foo"
(lldb)帮助expr
评估当前的C / ObjC / C ++表达式 程序上下文,使用当前范围内的变量。这个命令 采取“原始”输入(无需引用内容)。语法:expression -
命令选项用法:表达式[-f] [-G] [-d] [-u] - 表达式[-o] [-d ] [-u] - 表达
-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-&gt; a = my_array [3]
expr -f bin - (索引* 8)+ 5
expr char c [] =“foo”; c [0]重要说明:因为此命令采用“原始”输入,如果使用任何命令选项,则必须在结尾之间使用“ - ” 命令选项和原始输入的开头。
'expr'是'expression'的缩写
答案 1 :(得分:12)
以下内容对我有用。 我正在使用Xcode 8。
如果要将某个变量(例如“dict”)设置为nil然后测试代码流,可以尝试以下操作。
它看起来像在控制台中。
(lldb) expression dict = nil
(NSDictionary *) $5 = nil
答案 2 :(得分:3)
如果您使用的是Xcode 10或11,则在将断点初始化为所需变量后正确放置该断点,然后可以使用po myString = "Hello World"
轻松更改变量。