Hi,
The haxe main is enclosed in a global try-catch. This is what prints out the stack trace if it is not handled.
Debugging from here may not be exactly what you want, since all the local variables etc have been cleaned up by the time you get to the catch block.
You can breakpoint in "hx::Throw" (src/hx/StdLibs.cpp) but you will get all exceptions, even unexceptional ones such as stream EOF.
Normally null-access does not throw an exception, but if you use "-debug", you can breakpoint in hx::CriticalError (src/hx/Debug.cpp) to find out what is going in.
nme wraps 'nmeProcessStageEvent' in a try-catch on android only in native.display.Stage.hx. This will catch (and ignore) errors in your event handlers - almost everything is run from an event handler. Android only, because attaching a real debugger is hard on android. But you could increase this for other targets by editing the Stage.hx. I'm not convinced that this is the best way to handle the errors because it can hide problems and if you are not setup to recover from exceptions other things will probably go wrong later.
Maybe nme could only catch if a special error handler is present, on the understanding that the app is going to finish up and exit gracefully.
Hugh