- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 Fabric 中有这个堆栈跟踪:
我的问题:根据崩溃日志,函数“formatMessageAuthorName”是否是导致此 EXC_BREAKPOINT 崩溃的唯一原因?例如,除了此函数中的代码之外,是否还有其他可能导致崩溃的原因?
这是我的 formatMessageAuthorName 函数:
private static func formatMessageAuthorName(firstname: String, lastname: String?=nil) -> String {
// Capitalise first character of firstname
var Cap_firstname = firstname
Cap_firstname.replaceRange(Cap_firstname.startIndex...Cap_firstname.startIndex, with: String(Cap_firstname[Cap_firstname.startIndex]).capitalizedString)
guard let lastname = lastname else { return Cap_firstname }
// if has lastname & first char, capitalise too and concat with firstname.
if let firstCharLastName = lastname.characters.first {
return "\(Cap_firstname) \(String(firstCharLastName).uppercaseString)."
} else {
return firstname
}
}
我的假设
我所知道的唯一会使函数崩溃的线索是当'firstname'是一个空字符串时,它会在这里崩溃,因为它访问了无效的数组索引:
String(Cap_firstname[Cap_firstname.startIndex])
但是,我仍然对这个假设持怀疑态度,因为我很确定“firstname”不为空(它是从服务器检索到的)。我什至通过登录一些发生此崩溃的用户帐户并使用该页面 (MessageViewController) 对其进行了测试,但我自己从未遇到过崩溃并且名字显示正确。它似乎也与 iOS 版本无关,因为我收到了 iOS 8、9 和 10 的崩溃。
在我最近的应用程序更新后,我经常遇到这种崩溃(>300 次),我不知道为什么,因为它以前从未发生过,这里的代码不会通过更新改变,而且我永远无法用受影响的用户重现它.
如果罪魁祸首只能是这个函数中的代码,而没有其他可能性(如多线程、Realm 等),我可以转而关注服务器问题,比如 'firstname' 可能是空的字符串。但是,我仍然无法想象它是怎么发生的,因为我已经使用了这些用户帐户并且我自己从未遇到过这种崩溃。
非常感谢。
最佳答案
EXC_BREAKPOINT 总是通过执行某种陷阱指令 (*) 触发,并且异常会直接传递到执行陷阱指令的线程。因此,如果您看到一个崩溃报告说这个具有这个堆栈的线程得到了一个 EXC_BREAKPOINT,这意味着该线程确实做了一些执行陷阱指令的事情。
您可能可以通过查看二进制文件中的崩溃地址来了解这一点,您会在那里看到某种陷阱指令。 swift 标准库使用陷阱指令来指示各种无效访问错误,并且该代码可能已内联到崩溃的函数中。所以你上面的例子是有道理的。
(*) EXC_BREAKPOINT 也可以用于数据监视,但这不是这里发生的事情,无论如何它们仍然会被传送到访问监视数据的线程......
关于ios - EXC_BREAKPOINT 崩溃的原因范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434741/
当我归档我的数据时,出现了一个问题,我从未遇到过: 线程信息: 0xda5434 : bl 0xc7a6f0 ; function signature sp
我设置了一个游戏,玩家在游戏中控制飞船并射击来袭的敌人。当一个子弹和一个敌人接触时,不会崩溃,但是当两个子弹击中2个不同的敌人时,我在以下函数中崩溃了。(EXC_Breakpoint) 我该如何解决?
我在 Storyboard的 View Controller 上有一个 TableView Nib ,这样我就可以执行转场。目前,我已将第一个 Nib 放在 View Controller 上,但是当
当用户单击按钮时,将调用以下函数。 func wipeScreen() { removeGestureRecognizers() scene?.children.forEach({ (
我在 Logic X 中运行的 C++ audiounit 组件中的一些用户计算机上发生了崩溃。不幸的是,我无法在本地重复它,并且在尝试弄清楚它是如何发生的过程中我得到了一些问题。 以下是故障转储中的
我是 Swift 的新手,但我是 Objective-c 方面经验丰富的 iOS 开发人员。目前,crashlytics 已向单个用户报告了 EXC_BREAKPOINT 崩溃,但这是系统性的。我已尝
通常当我设置 lldb 观察点时,当它们被命中时,lldb 会说观察点命中旧值:新值。但是,我在一个似乎被写入第 3 方库 (libjpeg-turbo) 内部的地址上设置了一个观察点,而不是通常的观
我在 Fabric 中有这个堆栈跟踪: 我的问题:根据崩溃日志,函数“formatMessageAuthorName”是否是导致此 EXC_BREAKPOINT 崩溃的唯一原因?例如,除了此函数中的代
我们在我们的应用程序上使用介绍性价格。我们有一个问题只能在我们的两个 QA 设备之一上重现,即法国 App Store 上的 iPhone 6S (11.4.1)。另一个是 iPhone 7(带有法语
这是我为 iOS 7 更新应用程序以来一直遇到的一个新问题。每次在设备或模拟器上启动应用程序时,我都会收到此错误代码 RecipeDetailViewController scrollViewDidS
我有一个多线程应用程序,它在我的所有测试机器上都非常稳定,并且对于我的几乎每一位用户来说似乎都是稳定的(基于没有崩溃投诉)。不过,对于一位好心的用户来说,该应用程序经常崩溃,他发送了崩溃报告。所有崩溃
我在工作中发生了 EXC_BREAKPOINT 异常。 Date/Time: 2011-10-20 15:19:05.089 +0400 OS Version: iPhone O
如果有人可以花时间帮助我,我将非常感激!!! 我现在面对的是 我正在开发一个用于自动填充密码的应用程序,这意味着在网站登录期间单击键盘上方QuickType托架中的小键图标时,将触发我的应用程序。 然
我有一个基本的 tableview 设置,用于加载 JSON 数据。我正在使用 Fabric 进行崩溃报告,我尝试复制崩溃,但我可以从崩溃报告中猜测场景。 override func viewDidL
我的 UITableView 标题中有一个 UICollectionView。如果没有数据,我会删除 collectionView。我在行“self.collectionView.reloadData
我的 iOS 应用程序在测试中运行良好,但在启动时崩溃,并使用从 App Store 下载的发布版本。我已经尝试使用 Xcode 中的发布构建配置重新测试并且它没有崩溃,只是商店版本。我很确定它与应用
我在设置方法中设置了一个 var tagTextField: UITextField。稍后当我调用一个方法时,我想用这个 var tagTextField: UITextField 做一些事情,即:
我今天收到了来自 Crashlytics 的崩溃报告,我无法弄清楚问题出在哪里。我的应用已经运行了几个月没有问题,所以这似乎是一次性的。 崩溃是 Exception Type EXC_BREAKPOI
我正在 OS X Yosemite 上的 Xcode 6 中开发 Swift/Obj-C franken-app。我正在尝试在运行 iOS 8 的第 5 代 iPod Touch 上运行它。 几天前我
这是我的代码(largeAsteroids.count 永远不会为 0): var largeAsteroids=[[SKTexture]]() func randomLargeAsteroidTex
我是一名优秀的程序员,十分优秀!