Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XCode4 Debugger Always Breaks in Main

After upgrading to XCode4 (v. 4.2, 4D199) it seems every time my apps crash while debugging, the debugging points to main(), and the stack is unsymbolicated and useless.

This has been working fine for years, I have no idea what has gone wrong.

I'm using GDB. I also tried the LLDB as per this advice, and it didn't work either (similar, useless stack).

My breakpoints work, I get the full stack, and can inspect variables when my code hits those.

Steps to reproduce:

NB. this happens with my own project, but I'll use Apple's code here to remove that variable from the equation

  1. Download the following sample from Apple: https://developer.apple.com/library/ios/#samplecode/UICatalog/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007710

  2. In the ImagesViewController class, add the following code to the viewDidLoad method (so it will crash – we want it to crash for this test):

    // please note: this code is designed to crash! I want it to crash, to highlight my issue with XCode.
    NSMutableArray* test = [NSMutableArray new];
    [test insertObject:NULL atIndex:0];
    
  3. Then run the app & hit the 'Images' row.

  4. It crashes with a message like:

    2011-12-23 14:07:02.788 UICatalog[13394:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
    *** First throw call stack:
    (0x37bbb8bf 0x316a11e5 0x37b1020f 0x699f 0x34fac7ff 0x34fb8c39 0x34fb8aa9 0x34fb898f 0x34fb815b 0x34fb7f53 0x34fac673 0x34fac349 0x66c1 0x35026565 0x3509ece7 0x31aec943 0x37b8fa63 0x37b8f6c9 0x37b8e29f 0x37b114dd 0x37b113a5 0x3768ffcd 0x34fa1743 0x2459 0x2418)
    terminate called throwing an exception(gdb) 
    

View in xcode: enter image description here

like image 445
William Denniss Avatar asked Dec 23 '11 04:12

William Denniss


People also ask

Why breakpoint is not working in Xcode?

You might be pushing "Run" instead of "Debug" in which case your program is not running with the help of gdb, in which case you cannot expect breakpoints to work! In Xcode 6.4, there is now only a Run button and whether it runs a debug configuration or not depends on the currently selected scheme settings.

What does a dotted breakpoint mean in Xcode?

New in Xcode 13, if a breakpoint is not resolved to any location by LLDB, Xcode will show you a dashed icon. There is a myriad of reasons why a breakpoint is not resolved but there are some common explanations. If you hover over the unresolved breakpoint icon, we have a tooltip that can help you out.

How do I debug in Xcode step by step?

When you run an application in Xcode, the debugger is automatically started and attached to the process of the application. Click the Run button in the top left or press Command + R. From the moment the application is up and running, we can start inspecting the process and, if necessary, debug it.

What is exception breakpoint in Xcode?

An exception breakpoint is a type of breakpoint that is created when some exception occurs in the code. On occurrence of such exception our application stops at that given condition causing the exception and we can access all variables in scope at that breakpoint.


1 Answers

Thanks to brigadir for pointing me to the solution!

It works well. Here's some screenshots for how to solve this for anyone finding my question:

step 1

Tap the plus button of the breakpoints tab

step 2

Then click Done

like image 152
William Denniss Avatar answered Nov 15 '22 20:11

William Denniss