如何调试发行版构建

Posted

技术标签:

【中文标题】如何调试发行版构建【英文标题】:how do I debug a distribution build 【发布时间】:2011-07-29 11:03:51 【问题描述】:

好的

所以最近我在调试模式下工作但无法在分发模式下工作的应用程序时遇到了很多麻烦。

是否可以将断点和变量跟踪等 xcode 调试工具与应用的临时分发版本一起使用?

如果不是这样,人们通常会如何调试这样的东西?

【问题讨论】:

怎么不工作了?它会崩溃吗?一种方法不会给出预期的结果吗?您在使用第三方库吗? 这很奇怪,因为它不会崩溃。基本上,当按下按钮时,它的状态应该会改变,并且音频应该通过核心音频播放。从按下按钮到播放音频的时间,有很多功能。问题可能真的在任何地方。我真的不知道要寻找什么。在设备上的调试器中工作正常,但在归档时不能。不涉及第三部分库。 【参考方案1】:

假设您的崩溃日志没有为您提供任何线索(您需要连接到设备才能获得它们),您可以做很多事情。

但我会先查看崩溃日志...线索会在那里,不要忘记 Apple 通过 iTunesConnect 为您提供分发崩溃日志。

1) 丰富的日志记录是一回事。许多开发人员使用开关,以便在调试中,日志转到控制台,但对于其他构建,它们被丢弃。考虑一个不同的选项,您可以在其中登录到文件。然后,您可以将日志文件推送到远程服务器进行调试。设置这一切有点困难,但一旦你完成了,你会想知道没有它你是如何生活的。

2) 另一种选择是在检测到出现问题时使用 Flurry 并记录事件。当事情不如预期而不是随机崩溃时,这可以涵盖更多受控问题。如果您的条款和条件清楚说明您正在记录哪些数据以及原因,这对于已发布的应用来说可能是一项有用的功能。

3) 确保您进行了干净的构建,我确定您已经这样做了,但有时它会清除这些问题。

4) 您是否使用外部库/模块?我遇到了旧版本 TT 的问题,其中 arm6/7 构建设置错误,这导致分发构建出现问题。基本上检查每个配置文件的构建设置并确保它符合您的期望。

5) 怀疑竞态条件。在分发模式下(通常是因为关闭了日志记录),您会发现您的应用程序运行得更快一些。这可以揭示写得不好的代码中的计时问题。

所以是的...您可以做很多事情...您只是无法附加调试器;-)

【讨论】:

【参考方案2】:

无法在分发模式下调试应用程序。

分发、调试和发布之间的构建配置差异实际上是您在 XCode 中设置的任何参数。如果您的发行版配置给您带来问题而发行版没有,那么修复它的最简单方法是返回 Apple 复制发行版配置并进行更改以使其成为发行版配置的步骤,就像您最初所做的那样。

另一种方法是检查 Release 和 Distribution 的每一行配置并找出不同之处。另一种方式要快很多。 :)

【讨论】:

以上是关于如何调试发行版构建的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正确分发的发行版 pdb 文件构建 Qt5

如何使用 GLFW 预编译的二进制文件编译 Visual Studio 2019 发行版

在 Visual Studio 2008 中将应用程序构建为发行版时出现问题 - C++

为数十万台设备更新内部Linux发行版,Google如何做到?

构建自己的 Linux 发行版

构建 Apache Cassandra 的 DataStax 发行版