All exception break point is stopping for no reason on simulator
If you didn't find a problem in .plist file maybe the problem is in your .storyboard file..
Open it as source code from Xcode or in textView from Finder -
search for <customFonts key="customFonts">
I had there some old irrelevant array/font inside...:) just deleted it and it stopped
I was just experiencing the same exact problem and tracked down the issue.
Make sure that all fonts that you specify in your Info.plist
under Fonts provided by this application
are actually in your application bundle.
There's a more accurate way of tracking down the suspect font in your app using the debugger and the fact that it's conveniently stopped at the call.
Step 1: Reproduce the __cxa_throw breakpoint
Usually this happens when instantiating one of (or possibly the first) UIView object in your app. You'll see your debugger has broken and you'll have a stack such as this:
Step 2: Select the entry in the stack trace with the symbol FPFontCreateFontsWithPath
In my case, this entry was line 7 in the stack.
If you take a look at the disassembly, you'll notice the function signature of this entry:
Ah, cool! Looks like it takes some C strings. I betcha one of those is a filepath too!
Step 3: Locate that string in the app memory
I'm running this in a (x86_64) simulator, which on my computer stores the function arguments in some of the registers beginning with r
. More details on registers here.
Either press Shift+Command+M or select the "Debug > Debug Workflow > View Memory" option from the menu.
At the bottom of this view, go through the registers one by one and enter the addresses. In my case, r14 contained the path of the file.
Alright, so now I know the font that's messed up. It's looking for HelveticaNeue.ttc. Let's find the reference to that in the project.
Open a terminal, navigate to your project and run:
$ ~/W/X/project> grep -R "HelveticaNeue" ./
.//MyProject/Main.Storyboard: <array key="HelveticaNeue.ttc">
.//MyProject/Main.Storyboard: <string>HelveticaNeue</string>
.//MyProject/Main.Storyboard: <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="18"/>
Awesome, now either switch those to system by replacing name="HelveticaNeue" family="Helvetica Neue"
with type="system"
, open the storyboard and manually edit them or add a reference to the missing font to your app (info.plist and target).
Step 4: Celebrate ð ð ð¾ ð»
As the backtrace shows, the app didn't stop for no reason. It stopped because an exception was thrown, and it looks like a C++ exception.
Unlike Objective-C, where exceptions should only be thrown as the result of programming errors and therefore are very rare, there is a lot of C++ code around that throws and catches lots of exceptions. In that situation, probably best to only set a breakpoint on Objective-C exceptions, not all exceptions.