Ich frage mich, welchen Unterschied es zum Debugger (Intellij IDEA + Scala Plug-in) macht, wenn ich Scala-Code und nicht Java-Code debugge. Nach meinem Verständnis ist ein Debugger eng mit der Sprache gekoppelt, d. H. Ein Java-Debugger kann nicht mit Scala-Code umgehen, aber anscheinend steht hier die JVM im Mittelpunkt, was bedeutet, dass jeder Debugger ausreichen würde, solange es sich um Bytecode handelt. Recht ?Macht es für den Debugger einen Unterschied, dass es Scala-Code ist, den ich debugge?
WICHTIGER UPDATE: Das Problem bestand darin, ein Beispiel zu geben, wie ein Bytecode-Debugger für Scala einschränkend sein kann. Angenommen, ein Unterbrechungspunkt ist erreicht, und ich möchte nicht zur nächsten Zeile gehen, aber ich möchte, dass der Debugger einen Scala-Ausdruck im Kontext der Anwendung auswertet (z. B. möchte ich eine Operatormethode von einem Singleton-Objekt aufrufen). Der Debugger ist blockiert, weil er Scala nicht verstehen kann. Ich muss die Transformation selbst durchführen und das resultierende Java in den Debugger eingeben. Das Problem ist, dass nur "Haltepunkt Zeug" in Byte-Code-Ebene behandelt werden konnte. Was, wenn Sie einen Ausdruck unter Beobachtung stellen wollen? Debugger muss Scala verstehen, um den beobachteten Ausdruck zu bewerten, oder? Dieses Mal bin ich mir sicher, dass ich recht habe. Rache ist mein, sagt der Herr ;-)
Das ist richtig, aber es stellt eine Herausforderung mit Scala dar, weil eine Zeile des Scala-Codes normalerweise viele Schritte enthält, weil sie expressionsbasierter ist. Daher ist das Debuggen auf Zeilenebene weit weniger nützlich als das Debuggen auf Line-Ebene in Java , die dazu neigt, mehr singuläre Aktionen in jeder Zeile zu haben. Es gibt einige Leute an der EPFL, die zusätzliche Debug-Informationen zu Scala-erzeugten Klassendateien hinzufügen, um besser spezialisierte Scala-Debugger zu unterstützen. –
Ein weiteres Argument, um jede Zeile so einfach wie möglich zu machen und definitiv ein Argument dafür, so viel Scheiße wie möglich auf eine Zeile zu legen. –
@mP Sorry, aber ich stimme nicht zu, dass ein Mangel in der Tooling als "Argument" für eine bestimmte Art von Code zählen sollte. –