java系统崩溃如何查找原因,如何确定我的SIGTrap崩溃的原因?

我的团队最近发布了一个应用程序,其中发现了这些相对简单的应用程序,因为这是一个问题,即在违规函数中找到一个不良的强制转换或隐式解包的可选设置为nil . 这次虽然我找不到那种东西 . 我最好的猜测是,由于日历错误,可能其中一个 TimeBlock 对象或其属性为零 .

我们的应用程序是一个 Session 组织者,根据FreeTime,Conflicts和Meeting TimeBlocks 向用户显示他们的原生iOS日历事件 . 我可以访问几个崩溃用户的日历 .

Apple SigTrap Definition

如果在运行时遇到意外情况,Swift代码将以此异常类型终止,例如:具有nil值的非可选类型,强制类型转换失败

Crashing Function

/**

Updates the conflictHours and meetingHours according to the timeblocks

it is used as quick light reference to the button

*/

func updateTimeHours(timeblocks : [Timeblock]) {

for timeblock in timeblocks {

switch timeblock {

case is MeetingTimeblock:

for i in timeblock.startHour...timeblock.endHour {

self.meetingHours[i] = true

}

break

case is ConflictTimeblock:

for i in timeblock.startHour...timeblock.endHour {

self.conflictsHours[i] = true

}

break

default: break

}

}

updateButtonByOffset(offset: self.scrollTimeline.contentOffset.x)

}

Call of Crashing Function

/**

This function inits the variables and button layout according to the timeblocks

*/

func handleTimeblocksDependantComponents() {

buttonLayout()

guard Scheduler.sharedInstance.timelines.count > SharedGlobals.Calendar.TODAY_INDEX else {

return

}

updateTimeHours(timeblocks : (Scheduler.sharedInstance.timelines[SharedGlobals.Calendar.TODAY_INDEX].timeblocks))

}

SetHeaderHeight

/**

Adjusts the height of the header depending on whether there are hosted meetings or

meeting VIP's or not.

*/

private func setHeaderHeight() {

self.tableView.tableHeaderView = self.headerView

let hostedMeetings = OverviewInteractor.getHostedMeetings(dayIndex: SharedGlobals.Calendar.SELECTED_DAY)

let vips = OverviewInteractor.getVIPS(dayIndex: SharedGlobals.Calendar.SELECTED_DAY)

self.tableView.beginUpdates()

if let headerView = self.tableView.tableHeaderView {

var height = 360.0

if(vips.count == 0) { height -= 80.0 }

if(hostedMeetings.count == 0) { height -= 80.0 }

headerView.frame.size.height = CGFloat(height)

}

self.tableView.endUpdates()

}

TimeBlock Definition

// The Timeblock parent class. It simply holds a start and end time and provides its own duration. Not to be used as such

public class Timeblock {

public let startTime: Date

public let endTime: Date

/// Returns the hour the Timeblock starts, in current timezone

public var startHour: Int {

get {

return Calendar.current.component(.hour, from: startTime)

}

}

/// Returns the hour the Timeblocks ends, in current timezone

public var endHour: Int {

get {

return Calendar.current.component(.hour, from: endTime)

}

}

/// Returns the minutes the Timeblocks starts

public var startMinutes: Int {

get {

return Calendar.current.component(.minute, from: startTime)

}

}

/// Returns the minutes the Timeblocks ends

public var endMinutes: Int {

get {

return Calendar.current.component(.minute, from: endTime)

}

}

/**

Initialises the instance with a start and end time

- Parameters:

- startTime: The start time of the timeblock

- endTime: The end time of the timeblock

*/

public init(startTime: Date, endTime: Date) {

self.startTime = startTime

self.endTime = endTime

}

/**

Provides the Timeblock's duration in the form of a DateInterval

- warning: Only available on iOS 10.0 and up

- returns: A DateInterval of the duration of the Timeblock

*/

@available(iOS 10.0, *)

public func getTimeInterval() -> DateInterval {

return DateInterval(start: self.startTime, end: self.endTime)

}

/**

Provides the Timeblock's duration in the form of a `Double` (number of seconds)

- returns: The number of seconds that this Timeblock goes on for

*/

public func getDuration() -> Double {

return self.endTime.timeIntervalSince(self.startTime)

}

}

Crash Report

事件标识符:98D4F477-C57B-4767-B957-E9EA2E0EE3EA CrashReporter密钥:0000000000000000000000000000000000000000硬件型号:undefined进程:xxxxxxx [784]标识符:com.xxx.xxx.xx.xxxxxxx版本:4.0.3代码类型:arm64日期/时间:Sun Dec 24 2017 09:55:23 GMT 0000(GMT)发布时间:无效日期操作系统版本:undefined 11.0.3(15A432)报告版本:105异常类型:SIGTRAP异常子类型:undefined线程0名称:线程0崩溃: 0 CallIn 0x0000000102c224e4专用TimelineHeader.updateTimeHours(timeblocks :)(TimelineHeader.swift:0)1 CallIn 0x0000000102c20af0 TimelineHeader.handleTimeblocksDependantComponents()(TimelineHeader.swift:0)2 CallIn 0x0000000102c7a28c专用MeetingTableViewController.tableView(:viewForHeaderInSection :)(TimelineHeader.swift: 78)3 CallIn 0x0000000102c75d54 @objc MeetingTableViewController.tableView(:viewForHeaderInSection :)(MeetingTableViewController.swift:0)4 UIKit 0x000000018d1157d8 - [UITableView _delegateViewForHeaderIn部分:](UIKit)5 UIKit 0x000000018d11def0 96- [UITableView _sectionHeaderView:withFrame:forSection:floating:reuseViewIfPossible:willDisplay:] _ block_invoke(UIKit)6 UIKit 0x000000018cdf1a14 [UIView(Animation)performWithoutAnimation:](UIKit)7 UIKit 0x000000018d11dc60 - [UITableView _sectionHeaderView:withFrame:forSection:浮动:reuseViewIfPossible:willDisplay:](UIKit的)8的UIKit 0x000000018cfc6c04 - [_ UITableViewUpdateSupport(私人)_setupAnimationsForExistingHeadersAndFooters](UIKit的)9的UIKit 0x000000018cfc1070 - [_ UITableViewUpdateSupport _setupAnimations](UIKit的)10的UIKit 0x000000018cfc0944 - [UITableView的_updateWithItems:updateSupport :](UIKit)11 UIKit 0x000000018cfa8448 - [UITableView endCellAnimationsWithContext:](UIKit)12 UIKit 0x000000018cfa46e4 - [UITableView endUpdates](UIKit)13 CallIn 0x0000000102c761a4 MeetingTableViewController.setHeaderHeight()(MeetingTableViewController.swift:398)14 CallIn 0x0000000102c7a7c8专用闭包#1在MeetingTableViewController.re中freshTable(:)(MeetingTableViewController.swift:513)15 CallIn 0x0000000102c7aacc部分申请MeetingTableViewController.refreshTable(_ :)中的闭包#1(MeetingTableViewController.swift:0)16 CallIn 0x0000000102cd17f0 thunk for @callee_owned() - >()(LoginPageViewController) .swift:0)17 libdispatch.dylib 0x000000018327ea54 _dispatch_call_block_and_release(libdispatch.dylib)18 libdispatch.dylib 0x000000018327ea14 _dispatch_client_callout(libdispatch.dylib)19 libdispatch.dylib 0x000000018328b698 _dispatch_main_queue_callback_4CF $ $ VARIANT MP(libdispatch.dylib)20的CoreFoundation 0x00000001838aa544 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE(的CoreFoundation)21 CoreFoundation 0x00000001838a8120 __CFRunLoopRun(CoreFoundation)22 CoreFoundation 0x00000001837c7e58 CFRunLoopRunSpecific(CoreFoundation)23 GraphicsServices 0x0000000185674f84 GSEventRunModal(GraphicsServices)24 UIKit 0x000000018ce4767c UIApplicationMain(UIKit)25 CallIn 0x0000000102c02c08 main(AppDelegate.swif) t:18)26 libdyld.dylib 0x00000001832e456c start(libdyld.dylib)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值