v3.0.1
Highlights
Step filter in Scala 2 and Scala 3
The debugger now skips the methods that are generated by the compiler such as:
- the mixin forwarders
- the bridges
- the accessors: getters and setters
- the adapted methods (for-loop generators)
- the synthetized methods of a case class or case object
This optimizes the debugging experience by only stepping in relevant places of the Scala execution.
It affects the step-in, the step-out and the breakpoints.
Example
Before: The debugger stops twice in the mixin-forwarders before jumping to user-written code.
After: The debugger jumps directly to user-written code.
Expression evaluator for Scala 3
The debugger can evaluate any Scala 3 expression during the execution of a Scala 3 source file.
Show returned value of a method call
The debugger shows the returned value after stepping out of a method.
Logpoints
You can add logpoints in your source file to print values at some execution steps of your program.
Conditional breakpoints
You can add a boolean expression to a breakpoint so that it breaks in only if the condition is met.
Note: The breakpoint always breaks in if the expression does not return a boolean value or throws an exception.
Restart the top frame of the call stack
You can now restart the top frame of the call stack: the JVM will jump back to the beginning of the current method.
Note: This only works on the top frame. To restart a frame that is in the middle of the stack you can step out several times to return back to it and then restart it.
Skipping out of class loading
The JVM's calls to ClassLoader.loadClass
are automatically skipped out. The user's breakpoints in the class loaders and the explicit calls to loadClass
are never skipped out.
Contributors
Thank you to all contributors:
- Adrien Piquerez (@adpi2)
- Scala Steward (@scala-steward)
- Tomasz Godzik (@tgodzik)
- Tomasz Dudzik (@tdudzik)
- Jérémie Rossetti @jrossett
- Arthur Sengileyev (@arixmkii)
Merged PRs
- Implement expression evaluation for Scala 3 by @tdudzik in #197
- Update pprint to 0.7.3 by @scala-steward in #202
- Update scalafmt-core to 3.5.0 by @scala-steward in #203
- Update asm, asm-util to 9.3 by @scala-steward in #204
- Update scalafmt-core to 3.5.1 by @scala-steward in #205
- Update scalafmt-core to 3.5.2 by @scala-steward in #207
- Bump Scala 3 version by @tgodzik in #208
- Improve Scala 3 evaluation: static objects and private fields by @adpi2 in #210
- Update scalafmt-core to 3.5.3 by @scala-steward in #213
- [Scala 3] Fix evaluate public and private methods in static objects by @adpi2 in #211
- [Scala 3] Fix evaluate public and private fields of a class by @adpi2 in #214
- Submit dependency graph to Github by @adpi2 in #216
- [Scala 3] Fix evaluate overloaded private method by @adpi2 in #215
- [Scala 3] Evaluation of private inner class by @adpi2 in #217
- Update coursier, coursier-jvm to 2.1.0-M6 by @scala-steward in #218
- [Scala 3] Fix evaluation of shaded fields in inner classes by @adpi2 in #219
- [Scala 3] Fix evaluation of nested methods by @adpi2 in #220
- Scala 3 Fix evaluation involving captured variables by @adpi2 in #221
- [Scala 3] Fix macro expansion in expression evaluation by @adpi2 in #222
- Evaluate mutable variables by @adpi2 in #223
- Evaluation of lazy val by @adpi2 in #224
- Evaluate private members in parent class by @adpi2 in #226
- Evaluation involving Enum by @adpi2 in #227
- Evaluation involving value classes by @adpi2 in #228
- [Scala 3] Improve evaluator error reporting by @adpi2 in #229
- Remove
-agentlib
specified by user by @adpi2 in #231 - Unbox result of evaluation if value class or primitive by @adpi2 in #230
- Fix attach remote by @adpi2 in #232
- Add Scala 2.13.6 and Scala 3.1.3-RC5 by @adpi2 in #234
- Fix unmanaged jars in classpath by @adpi2 in #233
- [Scala 3] Evaluate assignment to local variable by @adpi2 in #239
- Fix eval local def in expession by @adpi2 in #242
- Update to Scala 3.1.3 by @adpi2 in #247
- [Scala 3] Fix evaluation of static Java method by @adpi2 in #248
- [Scala 3] Fix evaluation of private field in trait by @adpi2 in #249
- [Scala 3] evaluate expression on match or case def by @adpi2 in #250
- Scala 3 evaluation of class def by @adpi2 in #252
- Update scalafmt-core to 3.5.8 by @scala-steward in #254
- Update sbt, test-agent to 1.7.0 by @scala-steward in #256
- Update sbt to 1.7.1 by @scala-steward in #257
- Update test-agent to 1.7.1 by @scala-steward in #258
- Try fix timeouts by @adpi2 in #259
- Use run / baseDirectory for debugger by @arixmkii in #263
- [Scala 3] Fix evaluation on assignment by @adpi2 in #264
- Evaluator uses classLoader of current this by @adpi2 in #265
- [sbt] Start the server in an background job so that logs are not lost by @adpi2 in #266
- [sbt] Use javaOptions in build to run main class by @adpi2 in #268
- Update scalafmt-core to 3.5.9 by @scala-steward in #269
- Add Step Filter for Scala 2 by @adpi2 in #253
- chore: Add support for Scala 3.2.0 by @tgodzik in #272
- Scala 3 Step Filter by @adpi2 in #271
- Unwrap exception from InvocationTargetException in evaluation by @adpi2 in #274
- Update scalafmt maxColumn by @adpi2 in #275
- Fix insert expression on block by @adpi2 in #276
- [Scala 3] evaluate by-name param by @adpi2 in #277
- chore: Add support for Scala 2.13.9 by @tgodzik in #278
- Add Scala 2.12.17 by @adpi2 in #279
- Configure the
ExpressionCompiler
on eachManagedEntry
by @adpi2 in #280 - Fix duplicate entries by @adpi2 in #283
- Add filter to skip class loading by @adpi2 in #281
- Add support for conditional breakpoint by @adpi2 in #282
- Fix restart frame by @adpi2 in #284
- Use stable tasty-query version by @adpi2 in #285
- chore: Add support for Scala 2.13.10 by @tgodzik in #286
- Fix debuggee init by @adpi2 in #287
- Find src.zip from jre folder by @adpi2 in #290
- [Scala 3] add support for eval on for loop by @adpi2 in #291
- Introduce DebugTestSuite and refactor all tests by @adpi2 in #292
- Cross build in Scala 212, 213 and 3 by @adpi2 in #293
- Update tasty-query to 0.1.2 by @scala-steward in #295
- Update asm, asm-util to 9.4 by @scala-steward in #297
- Update sbt, test-agent to 1.7.2 by @scala-steward in #299
- Update scalafmt-core to 3.6.0 by @scala-steward in #300
- Update coursier, coursier-jvm to 2.1.0-M7 by @scala-steward in #296
- Use IStepFilterProvider to skip breakpoints by @adpi2 in #301
- Update test-agent to 1.7.2 by @scala-steward in #303
- Fix metals#4532: Handle empty jar files by @adpi2 in #302
Full Changelog: v2.1.0...v3.0.1