我完全难过了。我已经调试了一年多,并且在Build Configuration设置为Release时只遇到了这个问题。我已将Build Configuration设置为Debug,并且我已经检查以确保我附加到正确的进程,但在单步执行代码时仍然看不到值。还有其他人遇到过这个问题吗?
这是一个截图:
值正在返回,但我无法在此方法或任何其他方法中看到ANYTHING的值,我无法弄清楚原因。
感谢您提供给我的任何提示。
==============================更新================ ==================
我试图打印出值,这是我收到的输出:
请注意,即使我无法将其打印出来,Variables视图中的值对于结果也是正确的。但其他值,如filePath不应该是nil。
这太奇怪了。
==============================更新================ ==================
我把断点放在return语句上但仍然没有运气:
这次我看不到结果的价值:
答案 0 :(得分:9)
@Lucy,理想情况下,您在调试时不应该在Release配置文件中运行,Release是一个App Distribution配置文件,包的大小很小,没有/没有调试符号。
但是如果你必须在Release上进行调试(例如由于环境,数据原因),请确保将优化级别设置为'无'发布。
您可以通过以下方式访问上面的配置:
1)项目范围设置 - 影响所有目标
2)目标特定设置 - 仅影响单个目标
不要忘记在App Store发布之前将其切换回来。较低的优化会产生更大的ipk,从而增加您的用户数量。下载时间 - 也是潜在的dSYM生成。
对于上下文,Debug,Adhoc或Release配置文件纯粹是为了识别XCode附带的不同构建配置。 XCode使用没有优化的Debug配置文件(以及与开发和调试相关的各种其他预定义配置)启动项目,因此解释器可以加载符号 - 您可以根据需要随意调整此项。
理论上可以建立与Debug相同的发布版本配置文件。
答案 1 :(得分:9)
我遇到了同样的问题,在鼠标悬停和监视部分,每个变量都显示为nil值,但NSLog为这些变量打印正确值。
现在已经修好了。试试这个
转到产品菜单>方案>编辑方案或⌘ + <
在“运行”中,转到“信息”选项卡,将构建配置更改为" debug"。 希望它能奏效。
答案 2 :(得分:1)
我确实看到了你的部分问题。请注意self
nil
是怎样的?
这意味着您正在调用取消分配的对象。打开NSZombies
进行调试。
请参阅this SO answer了解如何启用NSZombie
鉴于在Objective-C中它是legal to send messages to nil
,我怀疑该对象被解除分配为调用doesLicenseFileExist
或另一个线程的副作用。
您可能会发现在IDLicenseCommand
-dealloc
方法中设置断点很有帮助。
答案 3 :(得分:0)
我遇到了这个问题,并将“链接时优化”从“增量”转为“否”,它解决了调试问题。