2017-10-18 2 views
-3

Ich arbeitete mit JDI API in JPDA. Aber aufgrund seiner gewissen Einschränkungen stecke ich irgendwann fest. Was sind die Alternativen zu JDI, damit ich benutzerdefinierte Debugger für Java-Programme schreiben kann? Vorzugsweise Java-Alternativen.Was sind die Alternativen zu Java Debug Interface

+1

Warum brauchen Sie eine Alternative? Was bedeutet "aufgrund einiger Einschränkungen"? Was lässt dich denken, dass es eine Alternative gibt? Warum sollten Sun und Oracle das gleiche Stück zweimal machen? – EJP

+0

@EJP Oracle sagt, dass Debugger-Implementierer Code schreiben können, um direkt mit der JDWP-Schicht von JPDA zu interagieren. So ist es möglich, einige Alternativen zu haben, die mehr Funktionalität bieten können. – rainyday

+0

Und @EJP Ich möchte Änderungen und Zugriffe auf lokale Variablen beobachten, die JDI nicht unterstützt. – rainyday

Antwort

1

JDI wird über die native JVMTI-API implementiert. Wenn Sie also bereit wären, Ihren eigenen Debug-Agent-Code zu implementieren, könnten Sie die JDI-Schicht vermeiden.

Allerdings bezweifle ich, dass es Sie weiter bringen würde. Ich vermute, dass die Einschränkungen in JDI tatsächlich Einschränkungen in der nativen JVMTI-API selbst sind. (Aber Sie können die JVMTI specification überprüfen, um zu sehen, ob es die Funktionen unterstützt, die Sie wünschen.)

Gibt es eine Alternative zu JVMTI?

AFAIK, nein. Zumindest nicht für aktuelle Oracle Hotspot-Veröffentlichungen! Die JDPAs bestätigen, dass nicht alle Java-Implementierungen die Spezifikation implementieren werden, daher besteht die Möglichkeit, dass die Java-Implementierungen anderer Hersteller das Debugging anders durchführen, die Integration zwischen einer Core-JRE und JVMTI jedoch eine Menge Software darstellt Entwicklungsaufwand, so ist es unwahrscheinlich, dass Oracle (oder jemand anderes) eine JVMTI-Alternative für Hotspot implementieren würde.)

Verwandte Themen