【问题标题】:Wrong value set when use lldb expr in Xcode8.0 and debug with iPhone6 Plus在 Xcode8.0 中使用 lldb expr 并使用 iPhone6 Plus 调试时设置了错误的值
【发布时间】:2016-11-10 07:42:20
【问题描述】:

我用这个expr来修改速度值:

expr (void)[[[[UIApplication sharedApplication] keyWindow] layer] setSpeed:0.9f]

但是设置的值是-2。

为什么会发生这种情况,我该如何解决?


我在另一个应用上尝试这个命令,结果是正确的......

【问题讨论】:

  • 这里的一个可能的差异来源是,如果您的应用程序执行“@import UIKit”,则会在调试信息中留下您已完成此操作的指示,并且从 Xcode8.0 开始的 lldb 将使用该指示会自动将 UIKit 导入到表达式解析器的上下文中。但是如果你执行“#import ”,lldb 没有简单的方法知道你正在使用 UIKit,所以你必须手动执行,如下面的答案所示。

标签: xcode8 lldb


【解决方案1】:

可能是 lldb 从不完整的 ObjC 运行时类型信息中获取这些函数的定义。如果该函数的签名错误,则无法正确传递参数。

如果你这样做会发生什么:

(lldb) @import UIKit

然后运行你的表达式?

【讨论】:

    猜你喜欢
    • 2015-02-16
    • 2014-11-26
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2022-06-12
    相关资源
    最近更新 更多