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.
ich wuerde gerne bei meinem sehr kurzen Programm eine Aufrufreihenfolge aller Methoden erhalten. Ich habe sowas wie einen Stacktrace im Kopf. Kann ich sowas irgendwie generieren ohne Exceptions zu werfen?
Hmja, man kann eine Exception erstellen und sich den Trace ansehen
new Exception().printStackTrace();
oder (etwas weniger Holzhammer-artig, aber mehr zu tippen ) mit Thread (Java Platform SE 6) und Co
Ich habe schon bevor ich das hier gepostet habe Tests mit Thread angestellt. Der liefert dann aber nur folgenden Output zurueck:
[java.lang.Thread.getStackTrace(Thread.java:1436), layout._ImproveLayout$1.run(_ImproveLayout.java:38)]
Die Methode improveLayout(); ruft einen Haufen andere Klassen und Methoden auf. Diese Aufrufe landen leider nicht im Stacktrace. Mache ich was falsch?
Java:
Thread thread = new Thread() {
@Override
public void run() {
improveLayout();
System.out.println(Arrays.asList(this.getStackTrace()).toString());
}
};
thread.start();
}
Naja... das Ausgeben des Stack Trace müßte dann eben in "improveLayout" gemacht werden, bzw. in den "Blättern des Aufrufbaumes". Bei Eclipse geht das ja indirekt mit der "Call Hierarchy", aber einen automatischen, programmatischen Ansatz dafür (der ohne sowas wie AspectJ oder so auskommt) wüßte ich spontan leider nicht...
Danke. Wenn ich es in den 'Blaettern' aufrufe muesste es natuerlich gehen. Mir geht es jedoch darum Code zu analysieren ohne diesen zu veraendern. Ein allgemeines Tool sozusagen.
Meine Hoffnungen sind zurzeit bei java.lang.reflect.Proxy. Noch kenne ich mich damit nicht so aus aber man muss glaube ich auch Code veraendern - also z.B. Interfaces implementieren. Allerdings will ich auch die Code-Aufrufe in der Java-Lib verfolgen und da kann ich schlecht was aendern.
Nun kommt mir noch ein letzter Gedanke. Profiling Tools schaffen es doch auch irgendwie den kompletten Executionsbaum aufzuzeichen. Sowas braeuchte ich auch. Irgendeine Idee wie das geht? Vielleicht gibt es ja auch ein Tool dass das macht - leider sind Profiler zu sehr in eine GUI verkapselt. Ich haette lieber einer einzelne Klasse die das macht die ich dann anpassen kann anstatt mir tagelang einen Profiler anzuschauen - fuer den es vielleicht nicht mal Sourcecode gibt.