I have a web application where I need to find all classes that accesses the http request object (because one of them is causing a hard to find bug). Therefore I would like to put breakpoint in some of the methods of ServletRequest implementation. This implementation is however provided by Weblogic for which I don't have sources. How can I put a breakpoint in a class anywhere in a particular method without having it's source . The Eclipse IDE is preferred.
+1
A:
I'm afraid you will need the source code if you want this to work.
For debugging, you need readable code + line numbers that match this code. None of these items are included in the class files
Molske
2010-08-12 08:34:40
+4
A:
You can set a method breakpoint using the outline view of the class in question. Then the debugger breaks at the first line of the method.
Thorbjørn Ravn Andersen
2010-08-12 08:36:58
cool, I didn't know that :) +1
Bozho
2010-08-12 08:39:41
+1
A:
Depending on your luck, you can do this with a decompiler. You'll have to place the breakpoint in the appropriate line (which, alas, might not contain "breakpointable" code)
The better way to do this is to create a ServletResponse
wrapper. Incidentally, yesterday I created such a thing (with a slightly different purpose), so here it is:
public class DebugFilter implements Filter {
public void init(FilterConfig filterConfig) {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
chain.doFilter(request,
new ResponseWrapper((HttpServletResponse) response));
}
public void destroy() {}
}
class ResponseWrapper extends HttpServletResponseWrapper {
public ResponseWrapper(HttpServletResponse response) {
super(response);
}
@Override
public PrintWriter getWriter() throws IOException {
return super.getWriter(); // breakpoint here
}
// Override whichever methods you like
}
Bozho
2010-08-12 08:38:08
The problem with the wrapper approach is that I already have wrapper in my application but some framework somehow operates directly on the original request - that's the bug:-).
calavera.info
2010-08-12 09:06:24