我有一个Web应用程序,我需要找到访问http请求对象的所有类(因为其中一个导致很难找到错误)。因此我想在一些ServletRequest实现的方法中加入断点。然而,这个实现由Weblogic提供,我没有源代码。如何在没有源的情况下在特定方法中的任何地方放置断点。 Eclipse IDE是首选。
答案 0 :(得分:17)
您可以使用相关类的大纲视图设置方法断点。然后调试器在方法的第一行中断。
答案 1 :(得分:1)
根据您的运气,您可以使用a decompiler执行此操作。你必须将断点放在适当的行中(唉,可能不包含“breakpointable”代码)
更好的方法是创建一个ServletResponse
包装器。顺便说一下,昨天我创造了这样的东西(目的略有不同),所以这里是:
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
}
答案 2 :(得分:0)
如果您希望这样做,我担心您需要源代码。
对于调试,您需要与此代码匹配的可读代码+行号。 这些项目都不包含在类文件中