我已插入设备,我正在通过XCode运行我的应用。 在某个时刻,应用程序在设备上崩溃并退出到主屏幕。但是,Xcode仍然将应用程序显示为“正在运行”,我可以选择单击“停止” - 它不会显示为灰色。没有错误消息打印到控制台,并且没有崩溃日志保存到设备日志。
我需要修复崩溃,但没有错误消息我很难追查问题。我已经在代码的关键区域放置了NSLog
个语句,但还没有找到导致崩溃的原因。
有没有人知道XCode不知道我的应用程序崩溃并仍然将应用程序显示为“正在运行”的奇怪事实?
答案 0 :(得分:4)
要帮助解决问题的调试部分,可以在构建设置中将“Strip Debug Symbols”设置为“No”:
然后您将能够在管理器窗口的“设备日志”部分中看到符号化的崩溃日志:
答案 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环境变量"
现在,运行您的应用程序并重新生成崩溃,这次您将在控制台上找到崩溃报告。
*** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0
答案 3 :(得分:1)