Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ist es möglich herauszufinden aus welcher Methode und Klasse heraus eine Methode aufgerufen wurde, ohne Code in der aufrufenden Klasse ändern zu müssen.
Du solltest am Anfang der Methode einen Breakpoint setzen und dies dann Debuggen. Wenn dieser Punkt erreicht wird, dann sieht Du aus welcher Klasse der Aufruf kam. Eine andere Möglichkeit ist die References zu prüfen, wenn Du Dich zum Beispiel in Eclipse befindest.
du kannst dafür den DeBug- Modus benutzen .... du setzt einen Haltepunkte in der Methode und siehst dann dort, wer die Methode aufgerufen hat.
Allgemein kannst auch auf die Methode klicken und mit Strg+Alt+H die History aufrufen und siehst alle Klasse und Methoden, die die Methode aufrufen in Eclipse
leider zielen diese etwas an meiner eigentlichen Frage vorbei. Ich weiß wie ich den Debugger benutze.
Ich suche allerdings zur Zeit nach einer Lösung im Quellcode auf den Namen und die Klasse der aufrufenden Methode zugreifen zu können. Kennt jemand da eine Möglichkeit?
ohne externe Tools im einfachen Code für ganz schnelle Tests am kürzesten
new Error("test").printStackTrace();
edit:
kompliziertes kommt gleich noch
edit:
ich habe als Hilfsmethode:
Java:
in Helper-Klasse:
public static String getFilteredFirstCaller() {
String info = ":: ";
StackTraceElement[] stArray = Thread.currentThread().getStackTrace();
if (stArray == null || stArray.length < 1) return info;
for (StackTraceElement ste : stArray) {
String className = ste.getClassName();
// nach erster interessanter Klasse suchen
if (!className.startsWith("...Helper") && ...) {
info += className + "." + ste.getMethodName() + "(" + ste.getFileName() + ":" + ste.getLineNumber() + ")";
break;
}
}
return info;
}
diese Formatierung ist für Eclipse-Konsole hilfreich um dann per Mausklick wie bei Exceptions in entsprechende Klasse springen zu können,
statt Klassenname anzuschauen kann man auch gleich auf 2., 3. oder 4. Element im Array gehen, ausprobieren
Wahrscheinlich habe ich es nicht verstanden, aber bei Methoden in Eclipse, geht man zu dem Methodennamen, rechte Maustaste, References, dann auf den Bereich, so zum Beispiel Workspace und dann werden die aufrufenden Klassen gezeigt.
nicht neidisch sein, Debugger sind immer Ansichtssache, der Code muss dafür anhalten, 50 Aufrufe etwa einer Rekursion sind mühsam,
ein Klick, 3 sec lang 17 fragliche Stellen durchlaufen lassen und danach 100 Zeilen Log anschauen hat auch seine Reize
kann man auch mit dem übernächsten Test am nächsten Tag noch vergleichen
Stimmt, akzeptiere diese Einwand... Dann soll man eben logs lesen Dies mache ich auch und threads oder ähnlichen Sachen auch sinnvoll, aber vor allen Dingen im Fehlerfall, ist der Debug-Mode schon nicht schlecht
und der ist wirklich elegant - nur wenn der schon im Original in Java-Tags gestanden hätte, dann hätte ich den nicht übersehen
Debugger sind gut, so lange man ein 1-Thread-System hat, das sehr tolerant programmiert ist.
Debugging eines Systemes in dem jeder Thread einen Timer als Überwachung drin hat und zickig reagiert wenn mal keine Reaktion kommt, ist nahzu unmöglich.
Auch Echtzeitsysteme ... na ja ... da müsste auch gleich die Uhr anhalten.
Ich würde mir schon lange einen Debugger wünschen, der alle Threads des Systemes anhält wenn einer in einen Breakpoint läuft. (Genau so wie ich objektspezifische Breakpoints möchte - also Break nur dann wenn genau in DIESEM Objekt etwas getan wird)