Mam aplikację internetową, w której muszę znaleźć wszystkie klasy, które uzyskują dostęp do obiektu żądania http (ponieważ jeden z nich powoduje trudny do znalezienia błąd). Dlatego chciałbym umieścić punkt przerwania w niektórych metodach implementacji ServletRequest. Tę implementację zapewnia jednak Weblogic, dla której nie mam źródeł. W jaki sposób można umieścić punkt przerwania w klasie w dowolnym miejscu w danej metodzie, nie posiadając jej źródła. Preferowane jest środowisko IDE Eclipse.Jak umieścić punkt przerwania w klasie bez jego źródła?
Odpowiedz
Można ustawić punkt przerwania metody, korzystając z widoku konspektu danej klasy. Następnie debugger łamie się w pierwszym wierszu metody.
Obawiam się, że będziesz potrzebował kodu źródłowego, jeśli chcesz, aby to działało.
Do debugowania potrzebny jest czytelny kod + numery linii pasujące do tego kodu. Żadna z tych pozycji nie jest zawarta w plikach klasowych
Na szczęście nie jest to prawdą. Zobacz odpowiedź Thorbjørna Ravna Andersena! – vol
W zależności od szczęścia możesz to zrobić pod numerem a decompiler. Będziesz musiał umieścić punkt przerwania w odpowiedniej linii (która, niestety, może nie zawierać kodu "z przerwami").
Lepszym sposobem na zrobienie tego jest utworzenie opakowania typu ServletResponse
. Nawiasem mówiąc, wczoraj stworzyłem coś takiego (z nieco innym celem), więc oto jest:
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
}
Problem z otoką polega na tym, że mam już opakowanie w mojej aplikacji, ale niektóre ramy działają w jakiś sposób bezpośrednio na pierwotne żądanie - to błąd :-). –
- 1. W phpStorm, jak umieścić punkt przerwania javascript w pliku php
- 2. Punkt przerwania lldb dla wszystkich metod w klasie cel c
- 3. Punkt przerwania wskazuje "objc_autoreleaseNoPool"
- 4. Punkt przerwania nie zostanie złamany w Silverlight
- 5. Jak dodać punkt przerwania do obiektu objc_exception_throw?
- 6. Punkt przerwania gdb na pthread_create
- 7. Jak ustawić punkt przerwania wewnątrz pakietu atomu?
- 8. Jak dodać warunkowy punkt przerwania w vb6?
- 9. Jak dodać punkt przerwania w Xcode?
- 10. Jak ustawić punkt przerwania w gdb dla wszystkich wywołań funkcji?
- 11. Punkt przerwania w działaniu nie działa
- 12. jak mogę umieścić punkt przerwania na "coś jest drukowane na terminalu" w gdb?
- 13. Eclipse/warunkowy punkt przerwania powoduje wyjątek BreakpointException
- 14. Czy można wskazać punkt przerwania w GDB?
- 15. Punkt przerwania debugowania w Swift Playground?
- 16. Powrót z funkcji wykorzystującej punkt przerwania
- 17. Złóż symboliczny punkt przerwania na UICollectionViewFlowLayoutBreakForInvalidSizes
- 18. W jaki sposób można uzyskać punkt przerwania, jeśli zmienna instancji w klasie ma zmienioną wartość?
- 19. Jak ustawić punkt przerwania w treści funkcji w R-studio?
- 20. Jak umieścić rozwiązania BIDS pod kontrolą źródła?
- 21. Punkt przerwania nie zostanie aktualnie trafiony, cshtml
- 22. Jak ustawić punkt przerwania w przypadku wzrostu długości wektora?
- 23. Jak zapisać punkt przerwania w podstawowej wersji wizualnej 6
- 24. Jak wykryć punkt przerwania usuwany w programie Visual Studio?
- 25. Jak ustawić punkt przerwania dla metody w ramach .net
- 26. Jak ustawić punkt przerwania na funkcji Pythona w gdb
- 27. Google Chrome debugger pomija punkt przerwania
- 28. Warunkowy punkt przerwania GDB dla typów arbitralnych
- 29. Oddzielanie źródła danych innej klasie w Swift
- 30. Jak ustawić punkt przerwania wewnątrz pliku C# PresentationFramework.dll?
fajne, tego nie wiedziałem :) +1 – Bozho
Z jakiegoś powodu menu z prawym przyciskiem myszy dla tej metody nie zawiera "Toggle Method Breakpoint" w świeżym obszarze roboczym, ale pojawia się po ustawieniu innego punktu przerwania. –