Frage

Ist es möglich, den Rückgabewert einer Methode, um zu sehen, nachdem die Linie und vor den Befehlszeiger kehrt zur aufrufenden Funktion ausgeführt wurde?

Ich bin Debuggen von Code, den ich nicht ändern kann (sprich: nicht will, dass eine Dritte Bibliothek neu zu kompilieren) , und manchmal springt es zu kodieren Ich habe keine Quelle oder die Rückkehr Ausdruck hat Nebenwirkungen, die ich in der Lage sein, nur führen Sie den Ausdruck in der Anzeige Tab.

stoppen

Oft ist der Rückgabewert wird in einer zusammengesetzten Anweisung, und so die Variablen Ansicht zeigt mir nie den Wert (daher wollen, um zu sehen das Ergebnis, bevor die Steuerung kehrt zur aufrufenden Funktion).

UPDATE:. Ich kann den Ausdruck Betrachter verwenden, da es Nebenwirkungen in der Erklärung ist

War es hilfreich?

Lösung

Dieses Feature wurde hinzugefügt Version Eclipse-Bug 40912 Eclipse 4.7 M2 unter .

Um es zu verwenden:

  • Schritt über die return Anweisung (mit "Step Over" oder "Step Return")
  • jetzt die erste in der Variablenansicht Zeile wird das Ergebnis der return-Anweisung zeigen, wie „[Anweisung xxx] zurückgegeben:“

Siehe Eclipse Project Oxygen (4,7) M2 - Neu und beachtenswert .

Andere Tipps

Gefunden eine wirklich gute Abkürzung für diesen. Wählen Sie den Ausdruck, der den Wert zurückgibt und drücken Sie

Ctrl + Shift + D

Dies wird den Wert der return-Anweisung anzuzeigen. Das ist sehr hilfreich in Fällen, in denen Sie nicht oder wollen nicht nur für das Debuggen Zweck ändern.

Hope, das hilft.

Hinweis: Haben Sie nicht getestet dies mit Drittanbieter-Bibliotheken, aber es funktioniert für meinen Code in Ordnung. Getestet dies auf Eclipse-Java EE IDE für Web-Entwickler. Version: Juno Service Release 1

Dies ist eigentlich ein bekannter Bug in Eclipse, von den ersten Tagen des IDE aus dem Jahr: https://bugs.eclipse.org/bugs/show_bug.cgi?id=40912

Deshalb habe ich immer mit dem folgenden Muster für Methoden halten:

MyReturnedType foo() {
     MyReturnedType   result = null;

     // do your stuff, modify the result or not

     return result;
}

Meine Regeln:

  1. Nur eine return-Anweisung, erst am Ende des Verfahrens (schließlich, nachdem es erlaubt)
  2. Haben Sie immer ein lokales genannt Ergebnis, das den zurückgegebenen Wert hält, von einer Standard beginnen.

Natürlich sind die meisten trivial Getter sind davon ausgenommen.

Ich bin gespannt auf die Antwort auf diese Frage auch zu lernen.

In der Vergangenheit, als mit 3rd-Party-Bibliothek wie das zu tun, was ich tat, ist eine Wrapper-Klasse oder Kinderklasse der übergeordneten Klasse, dass die Delegierten zu schaffen und meinen Debugging in der Wrapper / Kind-Klasse zu tun. Es braucht zusätzliche Arbeit aber.

„Nun, wenn Sie von einer Methode zurückgeben, in der oberen Methode, in der Variablenansicht zeigt es den Rückgabewert des zuvor beendet Aufrufs“ [1]

[1] https: / /coffeeorientedprogramming.wordpress.com/2016/09/23/eclipse-see-return-value-during-debugging/

Tough ein. Meine Erfahrung, außerhalb von Eclipse ist, dass, wenn Sie den Rückgabewert sehen könnten müssen, ist es am besten auf eine lokale Variable in der Funktion zugewiesen werden, so dass die return-Anweisung ein einfache return varname; und nicht return(some * expression || other);. Das ist jedoch nicht schrecklich für Sie hilfreich, da Sie sagen, Sie können nicht (oder nicht wollen) ändern oder sogar den Code neu kompilieren. Also, ich habe keine gute Antwort für Sie -. Vielleicht müssen Sie Ihre Anforderung zu überdenken

In Abhängigkeit von der return-Anweisung, können Sie den Ausdruck hervorheben, die zurückgegeben wird, und aus dem Kontextmenü, sollte es so etwas wie „Ausdruck auswerten“ sein (ich habe keine Finsternis vor mir jetzt, aber es ist sowas in der Art). Es wird Ihnen zeigen, was zurückgegeben werden soll.

Das ist ein bisschen weit hergeholt, aber wie es scheint nicht eine einfache Art und Weise zu sein:

.

Sie AspectJ zu Instrument mit Aspekten der JAR verwenden könnte, die sich nach dem Rückgabewert der Methoden erhalten Sie interessiert sind laut Eclipse Dokumentation können AspectJ Programme sein wie andere Programme debuggt .

Es gibt zwei Möglichkeiten, um Ihre Klassen zu weben, ohne die Bibliothek neu zu kompilieren:

  • Post-kompilieren, wenn das Weben der binären JAR Verarbeitung akzeptabel ist;

  • Lastzeit Weben, die eine Weberei Mittel in der VM Aktivierung erfordert.

Sehen Sie die Eclipse-Dokumentation (Link oben) und auch die AspectJ Entwicklung Umwelt-Führer .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top