【问题标题】:How can I debug a program when debugger fails调试器失败时如何调试程序
【发布时间】:2009-09-11 15:11:02
【问题描述】:

我正在使用 xCode 中的模拟器调试 Iphone 程序,我还有最后一个问题要解决,但我需要帮助解决它,原因如下:当它发生时,程序进入调试模式,但没有出现错误(没有 BAD ACCESS出现)并且它没有显示代码失败的地方。将一些变量设置为全局变量有助于我查看它们的值以开始指出错误所在,但在我完全深入之前,我想知道你们使用什么技术/工具来调试这些情况。

如果它有助于我调试以下内容:我将一些代码合并到 SpeakHere 演示中。该代码已添加到程序的 C++ 模块(AQRecorder.h 和 .mm)中。我似乎已经在我编写的函数中查明了问题代码。

【问题讨论】:

  • [笑话] 调试调试器,直到到达递归堆栈的底部。在这种令人沮丧的情况下无法抗拒注入一点幽默;-)
  • 您正在调试的问题的性质是什么?我们是否假设您在运行程序的发布版本时获得了 EXEC_BAD_ACCESS?
  • 大声笑.....我开始从变量状态中看到这是在哪里发生的。我正在考虑声明一个标志变量。在编码的错误部分的不同步骤中,我将为标志变量分配一个唯一标识符。这将使我能够看到崩溃前最后一个“标记”的位置。最后,我会在我“似乎”精确定位时为标志添加精确度
  • 我只在调试中运行过....但是当我停止调试运行时,程序停留在 iphone 模拟器中,它不会提供错误的访问权限,它会崩溃并询问我是否要报告苹果的问题。

标签: c++ iphone objective-c xcode debugging


【解决方案1】:

我最喜欢总是添加调试代码并将其记录到文件中。如果调试器无法正常工作,这允许我报告解决问题所需的所有信息。

我通常使用可以在运行时或通过命令行操作的标志来控制调试代码。

【讨论】:

  • 如果这是一个内存保留/释放问题,它不太可能帮助解决问题。
  • 戴夫。你是怎么做到的?
【解决方案2】:

如果错误是(并且很可能是)内存管理问题,那么打印日志条目确实没有帮助。

我建议学习如何使用 Instruments,并在发生内存泄漏时使用它的工具来跟踪它,而不是等到应用程序稍后崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多