我正在开发iOS应用程序,我注意到一个错误只有在应用程序以发布模式构建时才可重现。我发现运行我构建的发布模式应用程序的唯一方法是构建存档,使用我的调试配置文件对其进行签名,以及对我的设备进行临时部署。然而,使用这种方法,我无法使用调试器附加,如果在发布版本在代码上运行优化器之后它能够正常工作,我甚至不确定是否可以附加它。
是否有人知道调试问题的好方法,该问题仅在应用程序在发布模式下构建时才可重现?
答案 0 :(得分:32)
正常情况下,调试版本已禁用优化(-O0
)以使调试更容易,而版本构建已启用优化(-O3
或-Os
),这使代码运行得更快,但也使调试更难(但并非不可能)。您可以在调试配置中进入Xcode中的构建设置,并暂时调高优化级别 - 这将保留所有其他调试好东西(符号等),但希望也可以清除释放模式错误。 (完成后,不要忘记在Debug配置中将优化级别重置为-O0
!)
答案 1 :(得分:10)
答案 2 :(得分:8)
启用调试后,无法在发布模式下运行应用。这不是故意的。
在发布模式下运行应用时,您必须找到一种不同的方式来观察应用的行为(例如使用提醒)。
此外,您必须信任设备上的分发配置文件。 Xcode会在第一次运行时通知您并发送警报消息。
答案 3 :(得分:0)
要在发布模式下调试iOS应用程序,请修改设置: 构建设置->部署->部署后处理->发布->将值设置为“否”
答案 4 :(得分:0)
为了完成此操作,我不得不短暂地打开自动签名。您无法直接在带有iOS发行证书的设备上构建(需要iOS开发证书),也无法通过带有iOS开发的证书发行到App Store(需要iOS发行证书)。
我的调试模式已配置为使用iOS开发证书直接在设备上构建。我的发布模式已配置为使用iOS发行证书,以允许在所有设备上安装该应用。为了在设备上以发布模式运行,我短暂切换到自动代码签名进行测试。测试完成后,我使用git还原到以前的Xcode配置。
这不是最优雅的方法,但是它完成了工作。