In eclipse, I have the option set to breakpoint on any exception, such that I can debug the application state when an exception is thrown.
Case 1
In this first example, everything is working great. It shows the complete call stack, and I can click on any level of the call stack and see the local variables at the time of the crash.

Case 2
However if I hit exceptions in other parts of my code (anything on the UI thread or my GLSurfaceView thread it seems like), I get totally unhelpful behavior. After force close I can see the exception in logcat:
05-30 20:18:10.905: E/AndroidRuntime(23982): FATAL EXCEPTION: GLThread 13
05-30 20:18:10.905: E/AndroidRuntime(23982): java.lang.NullPointerException
05-30 20:18:10.905: E/AndroidRuntime(23982): at x.x.x.Graphics.MyRenderer.drawSubRenderable(MyRenderer.java:237)
05-30 20:18:10.905: E/AndroidRuntime(23982): at x.x.x.Graphics.MyRenderer.onDrawFrame(MyRenderer.java:181)
05-30 20:18:10.905: E/AndroidRuntime(23982): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
05-30 20:18:10.905: E/AndroidRuntime(23982): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
but I can’t stop the application at the time of the crash. The application stops, but I get only this (I can’t see my own code in the call stack):

Case 3
Finally, if I throw an exception on the UI thread, I get this monster, but again my code which threw the exception is nowhere to be seen:

The Question
Why can’t I get the code to breakpoint on my actual code in all cases, so that I can inspect why the exception is being thrown? Why does it work in some cases, and not others? Would it help if I installed the android source? (Currently just get a “source not found” message when I get exceptions)
So I did a little more research, and I think I can guess what is happening.
I was currently only catching uncaught exceptions, and I guess that any exceptions that occur inside an android callback get handled and rethrown, thus removing my source from the active stack trace.
If I catch all caught exceptions, than in all cases I do find my code in the call stack like I wanted.
Unfortunately if I catch on all caught exceptions, I break on probably over 100 exceptions generated and handled internally in the android framework, which makes breaking on caught exceptions somewhat useless.
Wish there was some better solution here, please answer if you know anything!