Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to print exception on exception breakpoint in Xcode 6?

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.

xcode view

like image 310
Julian B. Avatar asked Mar 02 '15 16:03

Julian B.


People also ask

How to set an exception breakpoint in Xcode?

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.

How do I see errors in Xcode?

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.

How to use break point in Swift?

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.

What is exception in Swift?

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.


1 Answers

You should just type:

po $arg1

For more information look at: How to replace NSUncaughtExceptionHandler with definition in Breakpoint navigator?

like image 130
Bartłomiej Semańczyk Avatar answered Sep 19 '22 13:09

Bartłomiej Semańczyk