Ich habe eine Webanwendung, wo ich alle Klassen finden muss, die auf das http-Anfrageobjekt zugreifen (weil einer von ihnen einen schwer zu findenden Fehler verursacht). Daher möchte ich in einigen Methoden der ServletRequest-Implementierung einen Haltepunkt setzen. Diese Implementierung wird jedoch von Weblogic bereitgestellt, für die ich keine Quellen habe. Wie kann ich einen Haltepunkt in einer Klasse an einer beliebigen Stelle in einer bestimmten Methode platzieren, ohne die Quelle zu haben? Die Eclipse-IDE wird bevorzugt.Wie bringe ich den Breakpoint in die Klasse, ohne dass er seine Quelle hat?
Antwort
Sie können einen Methodenhaltepunkt mithilfe der Gliederungsansicht der betreffenden Klasse festlegen. Dann bricht der Debugger in der ersten Zeile der Methode.
Ich fürchte, Sie werden den Quellcode benötigen, wenn Sie möchten, dass dies funktioniert.
Zum Debuggen benötigen Sie lesbaren Code + Zeilennummern, die mit diesem Code übereinstimmen. Keines dieser Elemente ist in den Klassendateien enthalten.
Glücklicherweise ist das nicht wahr. Siehe Thorbjørn Ravn Andersens Antwort! – vol
Je nach Ihrem Glück können Sie dies mit a decompiler tun. Sie müssen den Haltepunkt in der entsprechenden Zeile platzieren (die leider keinen "Breakpoint" -Code enthält)
Der bessere Weg, dies zu tun, ist eine ServletResponse
Wrapper erstellen. Übrigens, gestern habe ich eine solche Sache (mit einem etwas anderen Zweck), also hier ist es:
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
}
Das Problem mit dem Wrapper-Ansatz ist, dass ich bereits Wrapper in meiner Anwendung habe, aber irgendein Framework funktioniert irgendwie direkt auf der ursprünglichen Anfrage - das ist der Fehler :-). –
- 1. Was würde ein Scrum Teammitglied tun, wenn er merkt, dass er seine tägliche Arbeit missverstanden hat?
- 2. Wie bringe ich einen Blick nach vorne, ohne bringToFront() aufzurufen?
- 3. Hat Dart eine 'Breakpoint'-Anweisung?
- 4. Wie deaktiviere ich einen Knoten in Jenkins, nachdem er seine laufenden Jobs abgeschlossen hat?
- 5. Wie bringe ich das Widget in den Vordergrund?
- 6. Wie ändere ich den Buchstaben in der Zeichenfolge, in der er seine Position in Python kennt?
- 7. Bringe UIImageView beim Animieren in den Vordergrund
- 8. Wie kann ich die Breakpoint-Marge in VS2010 aktivieren
- 9. Schienen, wie von Breakpoint
- 10. Wie konvertiere ich mein Git-Repository zu Mercurial und bringe seine Tags mit?
- 11. Wie kann ich CKeditor sagen, dass er ohne Formatierung einen neuen Absatz erstellen soll?
- 12. Bringe den aktuellen Benutzer in die Datenbank-Ebene
- 13. Wie setze ich einen Breakpoint am Ende einer Funktion in windbg, so dass ich es nicht bearbeiten muss, auch wenn einige Zeilen in der Quelle hinzugefügt/gelöscht wurden?
- 14. Wie finde ich einen Breakpoint in C#?
- 15. Hat die Klasse ohne Datenelement einen Speicherbedarf in Java?
- 16. Qt 4.6 QLineEdit Stil. Wie gestalte ich den grauen Markierungsrahmen so, dass er abgerundet ist?
- 17. Wie Sie wissen, dass der Angerufene den Anruf entgegengenommen hat (Wie lautet der Telefonstatus, wenn er den Anruf annimmt)
- 18. Python-Skript, das seine Quelle ausgibt
- 19. Wie bringe ich springenden Ball schneller voran? dynamische Geschwindigkeit?
- 20. Wie klasse ich die Klasse ohne jQuery um?
- 21. Wie bekomme ich die ursprüngliche innerHTML-Quelle ohne den von Javascript erzeugten Inhalt?
- 22. Wie bearbeite ich diesen Algorithmus, so dass er Kombinationen ohne Ersetzung oder Wiederverwendung eines Elements erstellt?
- 23. Wie kann ich den Listener so einstellen, dass er in der Navigationsleiste wechselt?
- 24. Automatische AWeber-Authentifizierung? Wie kann ich programmgesteuert auf die Daten eines Benutzers zugreifen, ohne dass er sich anmelden muss?
- 25. Er sagt mir immer wieder "Klasse 'GameScene' hat keine Initialisierer"
- 26. Wie bringe ich mobile Tastatur in Chrome-Dev-Tools?
- 27. Wie stelle ich sicher, dass eine Tabelle, die SP ausgelöst hat, die Daten verwendet hat?
- 28. iOS: Wie installiere ich die Referrer-Quelle
- 29. Wie kann ich eine anonyme innere Klasse in Eclipse finden, die nur ihren synthetischen Namen hat (Klasse $ N)?
- 30. Wie kann ich meinen Taschenrechner so einrichten, dass er weiterläuft?
cool, ich wusste das nicht :) +1 – Bozho
Aus irgendeinem Grund das Rechtsklick-Menü für die Methode enthält nicht "Umschaltmethode Haltepunkt" auf einem neuen Arbeitsbereich, sondern zeigt nach einem anderen Haltepunkt wurde festgelegt. –