【发布时间】:2011-03-28 19:29:50
【问题描述】:
我有一个 Web 应用程序,我需要在其中找到所有访问 http 请求对象的类(因为其中一个会导致难以找到错误)。因此,我想在 ServletRequest 实现的一些方法中设置断点。然而,这个实现是由我没有来源的 Weblogic 提供的。如何在没有 source 的情况下在特定方法中的任何位置放置断点。首选 Eclipse IDE。
【问题讨论】:
我有一个 Web 应用程序,我需要在其中找到所有访问 http 请求对象的类(因为其中一个会导致难以找到错误)。因此,我想在 ServletRequest 实现的一些方法中设置断点。然而,这个实现是由我没有来源的 Weblogic 提供的。如何在没有 source 的情况下在特定方法中的任何位置放置断点。首选 Eclipse IDE。
【问题讨论】:
根据您的运气,您可以使用a decompiler 执行此操作。您必须将断点放在适当的行中(唉,可能不包含“可断点”代码)
更好的方法是创建一个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
}
【讨论】:
您可以使用相关类的大纲视图设置方法断点。然后调试器在方法的第一行中断。
【讨论】:
如果你想让它工作,恐怕你需要源代码。
对于调试,您需要可读的代码 + 与此代码匹配的行号。 这些项目都不包含在类文件中
【讨论】: