My app is crashing and it seems like it's caught in the exception breakpoint (which makes sense), but I am unable to get to the reason of the crash.
Here's what I've tried:
po $eax
po $rax
po $r0
po *(id *)($esp + 4)
For all the attempts above I'm getting the following error:
error: use of undeclared identifier '$<register name>'
error: 1 errors parsing expression
I also found this LLDB Command Guide, but didn't find anything useful (a bit confusing it you don't know what you're looking for).
How can I print the reason for the crash?
I'm running iOS 8, lldb and Xcode 6.
EDIT
Now I see why these registers are not found. Here's what I get when I run register read
:
General Purpose Registers:
x0 = 0x0000000000000001
x1 = 0x0000000000000000
x2 = 0x0000000000000000
x3 = 0x0000000195531a74 libsystem_malloc.dylib`nano_free_definite_size
x4 = 0x0000000000000000
x5 = 0x0000000000000000
x6 = 0x676e697274534643
x7 = 0x0000000000000f80
x8 = 0x00000001569d5a10
x9 = 0x0000000000000000
x10 = 0x000001a574056051
x11 = 0x0000000000000001
x12 = 0x000000000000003d
x13 = 0x0000000000000000
x14 = 0x0000000000000001
x15 = 0x0000000000000052
x16 = 0x0000000194d6e510 libobjc.A.dylib`object_setClass
x17 = 0x0000000000000000
x18 = 0x0000000000000000
x19 = 0x00000001702823f0
x20 = 0x0000000174038eaa
x21 = 0x000000019130a778 "release"
x22 = 0x0000000000000000
x23 = 0x0000000174246d20
x24 = 0x0000000174038ea0
x25 = 0x00000001895d22fa "forwardingTargetForSelector:"
x26 = 0x00000001745186a0
x27 = 0x0000000000000000
x28 = 0x00000000a40008ff
fp = 0x0000000105757720
lr = 0x000000018462a440 CoreFoundation`___forwarding___ + 968
sp = 0x00000001057576c0
pc = 0x000000018462a440 CoreFoundation`___forwarding___ + 968
cpsr = 0x20000000
As you can see these are the registers used do not contain any of the ones I had previously tried. However, I'm still unable to find the exception.
Step 1 − To add an exception breakpoint, first move to breakpoint navigator in xcode. Step 2 − Click on the + option at the left bottom of the navigator and select Exception breakpoint. Once you select exception breakpoint, it will be added to our code.
cmd+7. click on the top-most "Build $APP" section. locate the warning or error. click the buttons on the right to see the full details of the step you are interested in.
In the Breakpoint navigator, click the Add button (+) in the lower-left corner, and choose Swift Error Breakpoint. The app then pauses on the thrown error instead of the try! . When an uncaught Objective-C error causes a crash, the debugger shows the crash in the AppDelegate or main method.
Both errors and exceptions indicate that something didn't go as planned. The Swift error and exception breakpoints are useful to debug scenarios in which errors or exceptions are thrown. Even if your project is entirely written in Swift, adding an exception breakpoint can be useful to debug problems.
You should just type:
po $arg1
For more information look at: How to replace NSUncaughtExceptionHandler with definition in Breakpoint navigator?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With