61 Stimmen

Wie setzt man einen Haltepunkt in Eclipse in einer Bibliothek eines Drittanbieters?

Ich erhalte eine NullPointerException in einer Klasse aus einer 3rd-Party-Bibliothek. Nun möchte ich das Ganze debuggen und müsste wissen, von welchem Objekt die Klasse gehalten wird. Aber es scheint mir, dass ich nicht einen Haltepunkt in einer Klasse von einem Drittanbieter setzen kann.

Weiß jemand einen Ausweg aus meinen Schwierigkeiten? Natürlich benutze ich Eclipse als meine IDE.

Update: Die Bibliothek ist Open-Source.

67voto

Joachim Sauer Punkte 290477

Sie können problemlos Methoden-Haltepunkte in Bibliotheken von Drittanbietern setzen, ohne den Quellcode zu haben. Öffnen Sie einfach die Klasse (Sie erhalten die Ansicht "i-have-no-source"). Öffnen Sie die Gliederung, klicken Sie mit der rechten Maustaste auf die gewünschte Methode und klicken Sie auf Toggle Method Breakpoint um den Methoden-Haltepunkt zu erstellen.

38voto

Jared Punkte 24266

Der sicherste Weg, dies zu tun (und am Ende etwas zu haben, das tatsächlich nützlich ist), ist, den Quellcode herunterzuladen (Sie sagen, dass es Open-Source ist) und ein weiteres "Java-Projekt" einzurichten, das auf diesen Quellcode verweist.

Laden Sie dazu den Quellcode herunter und entpacken Sie ihn irgendwo auf Ihrem System. Klicken Sie auf "Datei"->"Neu"->"Java-Projekt". Geben Sie im nächsten Dialogfeld einen Projektnamen ein und wählen Sie "Projekt aus vorhandener Quelle erstellen". Navigieren Sie zum Root-Speicherort der Open-Source-Bibliothek.

Angenommen, alle zusätzlichen Bibliotheken, die für das Projekt benötigt werden, sind in dem von Ihnen heruntergeladenen Projekt enthalten, wird Eclipse alles herausfinden und den Build-Pfad für Sie einrichten.

Sie müssen das Open-Source-Jar aus dem Build-Pfad Ihres Projekts entfernen und dieses neue Projekt zum Build-Pfad Ihres Projekts hinzufügen.

Jetzt können Sie dies als Ihren Code behandeln und nach Belieben debuggen.

Damit werden zumindest einige Probleme anderer Ansätze umgangen:

  1. Sie könnten den Quellcode an die jar-Datei anhängen, aber wenn die jar-Datei ohne Debug-Informationen kompiliert wurde, wird dies nicht funktionieren. Wenn die jar-Datei mit Debug-Informationen kompiliert wurde ( lines,source,vars ...sehen http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html und die -g Option).

  2. Sie könnten einen "Ausnahme-Haltepunkt" hinzufügen, um zu sehen, wann die NullPointerException ausgelöst wird, aber das ist eine häufige Ausnahme, und kann auch ausgelöst werden und behandelt viele (Hunderte?) Mal vor der, die Sie suchen. Außerdem können Sie ohne den ursprünglichen Quellcode nicht wirklich viel über den Code sehen, der die NullPointerException auslöst - die Wahrscheinlichkeit, dass Sie herausfinden können, was falsch ist, ist ziemlich gering.

7voto

lindelof Punkte 33162

Sie können auch Haltepunkte für bestimmte Ausnahmen setzen. In der Debug-Perspektive gibt es eine Schaltfläche "Add Java Exception Breakpoint", und dort können Sie "NullPointerException" hinzufügen. Ihr Debugger hält dann die Ausführung an, sobald eine solche Ausnahme ausgelöst wird.

1voto

Normalerweise sollte es möglich sein, einen Haltepunkt zu setzen. Vor allem, wenn die Bibliothek eines Drittanbieters quelloffen ist. Wenn die Bibliothek eines Drittanbieters jedoch von einem kommerziellen Anbieter stammt, kann es sein, dass dieser den Quellcode mit ausgeschaltetem Debug-Flag kompiliert hat. Dies macht es Ihnen unmöglich, in der Bibliothek zu debuggen. Ihr Anbieter könnte dies als Teil eines Verschleierungsprozesses getan haben, um ein Reverse Engineering der Bibliothek unmöglich zu machen, oder einfach nur, weil die endgültigen kompilierten Klassen kleiner sind.

1voto

Ted Gulesserian Punkte 257

Um dies mit einer Maven Materialized Web App zu erreichen, musste ich drei Dinge tun.

1) Erstellen Sie ein neues Eclipse-Projekt mit dem Quellcode des 3rd party jar.

2) Entfernen Sie den Verweis auf das jar aus den pom.xml-Abhängigkeiten.

3) Fügen Sie das neue Eclipse-Projekt in den Projekteigenschaften zur Deployment Assembly hinzu.

4) Fügen Sie das neue Eclipse-Projekt zu den Projekteigenschaften -> Java Build Path -> Projekte des bestehenden Projekts hinzu, das auf das 3rd-Party-Projekt verweist.

Wenn das 3. Projekt korrekt mit Quellen zu Ihrem Maven-Repository hinzugefügt wurde, wird Maven automatisch den entsprechenden Quellcode herunterladen und Sie Haltepunkte hinzufügen lassen, ohne dass Sie einen der oben genannten Schritte durchführen müssen; ich habe jedoch gelernt, dass Sie sich nicht immer darauf verlassen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X