我已经升级到了Xcode 5.0。当我在调试模式下运行一个应用程序,并试图在控制台打印一个NSString
值时,它给了我下面的错误。你有什么想法吗?
error: warning: couldn't get cmd pointer (substituting NULL): Couldn't load '_cmd' because its value couldn't be evaluated
Couldn't materialize struct: the variable 'stringValue' has no location, it may have been optimized out
Errored out in Execute, couldn't PrepareToExecuteJITExpression
代码如下:
NSString *stringValue = [[self.responseArray objectAtIndex:i] valueForKey:@"merchant_name"];
5条答案
按热度按时间cgfeq70w1#
错误消息中说明了原因:* 它可能已经被优化了 *..这意味着你正在以优化的方式编译和运行你的代码。
你必须将编译器优化级别从
Fastest,Smallest
更改为none
:对项目设置执行相同的操作
kr98yfug2#
请确保您处于调试模式,进入【编辑方案】〉【构建配置】〉【调试
1zmg4dgp3#
您可能正在尝试在“发布方案”中进行调试。转到“产品/方案/编辑方案”并在左侧面板中选择“运行”。然后将构建配置更改为“调试”。
7vhp5slm4#
一个备选答案:您可以使用变量来阻止它被优化,而不是通过删除优化来修复“它可能已经被优化了”。
所以,在你的问题中,如果你对
stringValue
做了一些事情:stringValue
将不再被优化,因为你正在使用它。如果您想查看项目中优化出的变量的所有示例,请使用【产品】-【分析】对项目进行分析。如果您开启了编译器优化,任何“死存储”警告(其中存储了一个值,并且永远不会读取)都会在编译时被优化出。
7kqas0il5#
这个错误似乎是显示给我,尽管在调试模式与0优化级别.似乎是一个LLDB问题:https://discourse.llvm.org/t/debugging-swift-is-just-awful/67866