首页 文章

如何在Xcode中使用LLVM进行调试时更改变量值?

提问于
浏览
146

在Xcode中,GDB允许您在调试时更改局部变量(请参阅how to change NSString value while debugging in XCode?) . LLDB是否提供类似的功能?如果是这样,我们如何使用它?

2 回答

  • 10
    expr myString = @"Foo"
    

    (lldb)help expr使用当前范围内的变量评估当前程序上下文中的C / ObjC / C表达式 . 此命令采用“原始”输入(无需引用内容) . 语法:expression - 命令选项用法:expression [-f] [-G] [-d] [-u] - 表达式[-o] [-d] [-u] - 表达式-G <gdb-format >( - gdb-format <gdb-format>)
    使用GDB格式说明符字符串指定格式 .

    -d <boolean>( - dynamic-value <boolean>)
    将表达式产生的值向上转换为其动态类型
    如果可供使用的话 .

    -f <format>( - format <format>)
    指定要用于显示的格式 .

    -o( - 对象 - 描述)
    打印由此产生的值的对象描述
    表达 .

    -u <boolean>( - silent-on-error <boolean>)
    如果表达式导致崩溃,断点,则清除程序状态
    命中或发出信号 .
    示例:expr my_struct-> a = my_array [3] expr -f bin - (index * 8)5 expr char c [] =“foo”; c [0]重要说明:由于此命令采用“原始”输入,因此如果使用任何命令选项,则必须在命令选项的结尾和原始输入的开头之间使用“ - ” . 'expr'是'expression'的缩写

  • 234

    以下内容对我有用 . 我正在使用Xcode 8 .

    如果要将某个变量(例如“dict”)设置为nil,然后测试代码流,可以尝试以下操作 .

    • 初始化后将断点正确放入所需的值 .

    • 然后在lldb命令行中执行"expression dict = nil"来更改它 . (例如"nil")

    • 跨越断裂点 .

    • 检查下一行中的变量"dict" . 它将是零 .

    它看起来像在控制台中 .

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

相关问题