应用在设备上崩溃,但XCode没有记录崩溃

4
我已经将我的设备插入并通过XCode运行我的应用程序。在某个特定点上,应用程序在设备上崩溃并退出到主屏幕。然而,Xcode仍显示应用程序为“运行中”,我可以选择点击“停止”-它没有变灰。控制台没有打印任何错误消息,并且没有保存任何崩溃日志到设备日志。
我需要修复这个崩溃,但是没有错误消息,我很难找到问题的原因。我已经在代码的关键区域放置了NSLog语句,但还没有更接近找出导致崩溃的原因。
有人知道关于XCode不知道我的应用程序已经崩溃并仍然显示应用程序为“运行中”的奇怪事实吗?
4个回答

4
为了帮助您解决问题中的调试部分,您可以在构建设置中将“Strip Debug Symbols”设置为“否”: ss 然后,在组织者窗口的“设备日志”部分,您将能够看到一个符号化的崩溃日志: ss2

谢谢 - 我将值设置为“否”,但是我没有收到崩溃日志,因为XCode无法识别它为崩溃。 - RanLearns

3
如果应用程序已签名以进行发布,X-Code将无法对其进行调试。 在设备上启动应用程序会导致X-Code无法获取进程ID。
您仍然可以通过组织者 -> 设备 -> 控制台来获取日志消息(和其他控制台消息,希望包括崩溃信息)。
如果您的应用程序已签署进行开发并且仍然存在此问题,则存在更深层次的问题,导致X-Code认为您的应用程序无法启动。 查看应用程序初始化需要多长时间;我曾经遇到过加载时间大于10秒的问题,导致 X-Code 无法获取进程ID,但应用程序仍在运行。
最坏的情况是,大量加载NSLog消息,安装该应用程序并运行它直到崩溃。 然后立即打开组织者,转到设备并下载控制台,然后查找任何崩溃日志。
祝你好运!

1
我遇到了相同的问题,应用程序崩溃了,没有任何日志或错误。我的错误与"objc_msgSend"有关。
要找出您的错误-从Xcode Navigator窗口(左侧窗口)选择"Show the Debug Navigator"。我的应用程序在第一行的Thread 1中显示"objc_msgSend"。
因此,我搜索了关于"objc_msgSend"的信息,并发现这个崩溃是由于内存错误引起的。这意味着已向已经被解除分配的接收器发送了消息。
要跟踪此错误,请使用"NSZombieEnabled环境变量"
1.从Xcode中,单击Product - Scheme - Edit scheme。 2.从"Run scheme"配置中,转到"Diagnostics"选项卡。 3.在"Memory Management"下,选中旁边的"Enable Zombie Objects"复选框。
现在,运行您的应用程序并重新生成崩溃,这次您将在控制台上找到崩溃报告。
*** -[WSAddressViewController respondsToSelector:]: message sent to deallocated instance 0x1683d1b0

1
你是否不小心在该行设置了断点?

Screenshot of breakpoint

禁用或删除断点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接