应用程序在设备上崩溃,但XCode没有注册崩溃

时间:2011-11-09 00:19:32

标签: iphone xcode ipad console crash

我已插入设备,我正在通过XCode运行我的应用。 在某个时刻,应用程序在设备上崩溃并退出到主屏幕。但是,Xcode仍然将应用程序显示为“正在运行”,我可以选择单击“停止” - 它不会显示为灰色。没有错误消息打印到控制台,并且没有崩溃日志保存到设备日志。

我需要修复崩溃,但没有错误消息我很难追查问题。我已经在代码的关键区域放置了NSLog个语句,但还没有找到导致崩溃的原因。

有没有人知道XCode不知道我的应用程序崩溃并仍然将应用程序显示为“正在运行”的奇怪事实?

4 个答案:

答案 0 :(得分:4)

要帮助解决问题的调试部分,可以在构建设置中将“Strip Debug Symbols”设置为“No”:

ss

然后您将能够在管理器窗口的“设备日志”部分中看到符号化的崩溃日志:

ss2

答案 1 :(得分:3)

如果应用程序已签名以进行分发,则X-Code无法对其进行调试。将应用程序启动到设备上会导致X-Code无法获取进程ID。

您仍然可以通过组织者获取您的日志消息(以及其他控制台消息,包括崩溃信息) - >设备 - >控制台。

如果您的应用已签署开发但这仍然是一个问题,那么您在此处有一个更深层次的问题,即导致X-Code认为您的应用无法启动。了解您的应用初始化需要多长时间;我有加载时间>的问题10秒左右X-Code没有获得进程ID但应用程序仍在运行。

更糟糕的情况是,加载NSLog消息就像疯了一样,安装应用程序并运行它直到它崩溃。然后立即加载管理器,转到设备,下载控制台,然后查找任何崩溃日志。

祝你好运!

答案 2 :(得分:1)

我有同样的问题,App没有任何记录或错误崩溃。我的错误与" objc_msgSend"有关。

找出错误 - 选择"显示调试导航器"从Xcode Navigator窗口(左侧窗口)。我的应用程序显示" objc_msgSend"在线程1的第一行。

所以我有谷歌关于" objc_msgSend"并发现此崩溃是由于内存错误而发生的。这意味着已将消息发送到已经解除分配的接收方。

要跟踪此错误,请使用" NSZombieEnabled环境变量"

  1. 从Xcode,点击产品 - >方案 - >编辑方案。
  2. 来自"运行方案"配置,转到"诊断"标签。
  3. "内存管理"选中"启用Zombie Objects"。
  4. 旁边的复选框

    现在,运行您的应用程序并重新生成崩溃,这次您将在控制台上找到崩溃报告。

    *** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0
    

答案 3 :(得分:1)

您是否偶然在线路上设置断点?

Screenshot of breakpoint

禁用或删除断点。