Как поставить точку останова в классе, не имея его источника? - PullRequest
11 голосов
/ 12 августа 2010

У меня есть веб-приложение, где мне нужно найти все классы, которые обращаются к объекту http-запроса (потому что один из них вызывает ошибку, которую трудно найти). Поэтому я хотел бы поставить точку останова в некоторых методах реализации ServletRequest. Эта реализация, однако, предоставляется Weblogic, для которого у меня нет источников. Как я могу поставить точку останова в классе в любом месте конкретного метода, не имея его источника. Eclipse IDE является предпочтительным.

Ответы [ 3 ]

17 голосов
/ 12 августа 2010

Вы можете установить точку останова метода, используя представление схемы рассматриваемого класса.Затем отладчик прерывается на первую строку метода.

1 голос
/ 12 августа 2010

В зависимости от вашей удачи, вы можете сделать это с декомпилятором . Вам нужно будет поместить точку останова в соответствующую строку (которая, увы, может не содержать код «точки останова»)

Лучший способ сделать это - создать оболочку 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
}
0 голосов
/ 12 августа 2010

Боюсь, вам понадобится исходный код, если вы хотите, чтобы это работало.

Для отладки необходим читаемый код + номера строк, соответствующие этому коду. Ни один из этих предметов не включен в файлы классов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...