The best way to debug servlets that I have found is to make it so there is as little code as possible in the servlet itself, and as little code as possible which depends on "non-mockable" Servlet API classes.
I typically have just enough code in the servlet to extract the parameters from the Request and the Writer from the Response, and pass them in to a more testable class for the "heavy lifting".
Once you have this, you can put a simple "main" wrapper round your code (or, even better, a
JUnit wapper), and debug and
test it under full control on your own desktop, using your favourite tools with no deployment necessary.
Have you tried this ?