Xcode: EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode

2019-01-27 14:30发布

问题:

I'm getting an EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe) error while running my app on a iOS7 device. The thing is, it runs smoothly on iOS7 simulator.

By using breakpoints, I've found the error occurs in line 6.

required init(coder aDecoder: NSCoder) {
    personPicker = ABPeoplePickerNavigationController()
    super.init(coder: aDecoder)
    personPicker.peoplePickerDelegate = self
}
 /*error line*/ @IBAction func BPressed(sender: AnyObject) {
 self.presentViewController(personPicker, animated: true, completion: nil)
}

This error is new, and didn't appeared on my device until I've added these lines into the code;

        let url = NSURL(string: urlPath)
        let request = NSURLRequest(URL: url!)
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
            println(NSString(data: data, encoding: NSUTF8StringEncoding))
        }

Also; the debugger points the error to this line:

0x16a7f0:  trap 

And gives this output in the console:

fatal error: attempt to create an Unmanaged instance from a null pointer

This error causes a black screen on device even though I've changed nothing in storyboard.

Thank you for taking your time.

Edit: This error showed no result in search engines, but I think it may be related to obj-c.

回答1:

I ran across this issue today when testing some Swift code against an old iPad 2 (I think it's an iPad 2 -- it's model MD368LL/A), running iOS 8.1.3. It turned out that the problem existed everywhere that I was calling something like:

Int(arc4random() % <someInt>)

This worked fine on later iPads, iPhone5S, iPhone6, etc. Fixed by changing code to:

Int(UInt32(arc4random()) % UInt32(<someInt>))

I think it was a register overflow on the older hardware.



回答2:

I ran into this problem, in iPhone 5, which is iOS 10.3.3.

let date = Date()
// Crashes in `iPhone 5`, but works in `iPhone 5s`.
let time: Int = 1000 * Int(date.timeIntervalSince1970) //< Crash due to cast `Double` to `Int`

// This crashes in `iPhone 5`, and `iPhone 5s` too.
let time: Int32 = 1000 * Int32(date.timeIntervalSince1970)

// It works fine in `iPhone 5`, and `iPhone 5s`.
let time: Int64 = 1000 * Int64(date.timeIntervalSince1970)


回答3:

In my case, this ended up being from a bit overflow issue if you cast too large of a number into too small of a type. E.g. Int(someNumber) if someNumber was an Int64 type.

iPhone 5c break at the offending line of code: