In der Java Debugger Interface-Dokumentation für die Location class gibt es einen Absatz, der die "Stratum" des Standortes diskutiert. Ich habe mich ein wenig genauer angesehen, um herauszufinden, wie man eine neue Schicht (etwa für Scala oder JRuby) implementieren würde, aber ich habe nicht viel gefunden. Kann jemand das Thema beleuchten?Implementieren Sie verschiedene Stratum für Java-Debugger-Schnittstelle
Antwort
Schichten wären für Scala oder JRuby nicht wirklich geeignet, da sie direkt in Bytecodes kompiliert werden, sodass die Attribute SourceFile und LineNumberTable ausreichen. Schichten sind für Dinge wie JSP gedacht, die in eine Java-Quelldatei übersetzt und kompiliert werden. Die Schichten werden durch eine Quellkarte (SMAP) definiert, die in einem SourceDebugExtension-Attribut gespeichert ist. Die Details, wie das alles funktioniert, sind Teil von JSR-45. Ein anderes Beispiel wäre das State Machine Compiler, obwohl ich nicht glaube, dass es ein SMAP erzeugt. Ich bin mir auch nicht sicher, ob Javac eine Option zum Einbetten des SMAP in die Klassendatei hat. Sie würden dann ein separates Werkzeug dafür benötigen.
Tatsächlich sind Zeilennummern für die Bytecode-Adresse -> Quellpositionszuordnung für Scala-Code nicht genau genug. Eine gegebene Zeile von Scala-Code kann leicht viele sinnvolle Breakpoints ergeben, aber aktuelle Debugger können ihre Quellposition innerhalb einer solchen Zeile nicht auflösen. –
- 1. Implementieren Sie die gleiche Logik für verschiedene Objekte wie T
- 2. Implementieren von admob für verschiedene Aktivitäten
- 3. Verschiedene Menü für verschiedene Fragmente
- 4. Implementieren Fn Trait (Call Operator) für verschiedene Arten von Argumenten
- 5. Gleiche Funktion für verschiedene generische Typen mit Reflektion implementieren
- 6. Verschiedene Verfallsdaten für Dokumente in einer Bibliothek implementieren
- 7. Programmgesteuert zwei verschiedene Layouts mit Größenklassen implementieren
- 8. Verschiedene Möglichkeiten DAGs in Java zu implementieren
- 9. Verschiedene Daten für verschiedene Benutzer
- 10. verschiedene Konfigurationsdateien für verschiedene Server
- 11. Flex: HSlider - Stellen Sie verschiedene Skins für verschiedene Daumen ein?
- 12. Lassen Sie Struts verschiedene JSPs für verschiedene Rollen anzeigen
- 13. Verwenden Sie verschiedene Ressourcen für verschiedene Anwendung Aromen mit gradle
- 14. So erhalten Sie verschiedene Elternklassen für verschiedene Elemente
- 15. Susy: Verwenden Sie verschiedene Layouts für verschiedene Bildschirmgrößen
- 16. Wie haben Sie verschiedene Leuchtkasten für verschiedene Objekte
- 17. verschiedene Kernel für verschiedene Architekturen
- 18. Verschiedene Bilder für verschiedene Dimensionen
- 19. Wie dynamic class_name für die Assoziation has_many implementieren? Für die gleiche Tabelle, verschiedene Motoren
- 20. Implementieren Sie Floating View für Video-Streaming
- 21. Implementieren Sie einen LIKE Abfrageoperator für Aerospike
- 22. So implementieren Sie das Kontextmenü für NSCollectionView
- 23. So konfigurieren Sie StructureMap für verschiedene Importarten
- 24. Generieren Sie Javascript-Konfiguration für verschiedene Umgebungen
- 25. Wie Sie verschiedene Platzhalter für DateFromToRangeFilter festlegen?
- 26. Legen Sie verschiedene Aktivitäten für UIActivityViewController Swift
- 27. Verwenden Sie unterschiedliche Hervorhebungsfarbe für verschiedene ToolStripMenuItems
- 28. Verwenden Sie verschiedene Tastatur für eine Datei
- 29. Verschiedene Bash Prompt für verschiedene vi Bearbeitungsmodus?
- 30. Implementieren Sie Ihre eigene sizeof
Haben Sie sich die Spezifikation für JSR-45 (Debugging-Unterstützung für andere Sprachen) angesehen? http://jcp.org/en/jsr/detail?id=45 – kschneid
Ich hatte nicht, nein. Danke für den Zeiger, das hilft ein bisschen. – jfager
Ich erinnere mich vage daran, dass die Klassendatei ein Attribut hat, das auf die Quelldatei verweist - haben Sie versucht, das auf eine Datei in einer anderen Sprache zu setzen? – Ramon