If you build your application abject (assuming you're using the webapp microframework that comes with App Engine, since you haven't mentioned that crucial detail;-) in the following way...:
application = webapp.WSGIApplication(url_to_handlers, debug=True)
the debug=True
means you should be seeing a traceback in the browser for your exceptions, making debugging far easier. (The url_to_handlers
is a list of pairs (url, handler)
, and of course I'm assuming you've imported webapp
appropriately, etc etc).
Just about every framework has debugging facilities that are at least equivalent (or better, e.g. showing a page in which by suitable clicking you can expand nested frames and examine each frame's local variables) so this should not be hard to do whatever other framework you may be using (and it's advisable until you feel your app is really solid -- after that, once you open it up beyond a small alpha-test layer of friends, you probably don't want to bother your users with full tracebacks... though I've seen many web pages do that, in all kinds of different languages and frameworks, it's still not the best user experience;-).
Most any exception that occurs only when deploying to production but isn't reproduced in the local SDK in strict mode means a weakness in the SDK, btw, and it's a good idea (once you know exactly what happened) to post a bug in the SDK's tracker. (Some things that may reasonably considered exceptions to this general rule include timeout problems, since the exact performance and workload of the deployment servers at any given time are of course essentially impossible to reproduce with any accuracy on your local SDK, so the SDK basically doesn't even try;-).