All notable changes to the "vscode-java-debugger" extension will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- The launch config
envFile
now supports an array of env files. #1505. Thanks to Ed Hillmann for contribution.
- Fail to debug with java 23 - Unrecognized option: -Xnoagent. java-debug#561.
- Latest Gradle Language Support extension cause hot code replace to fail. #1402.
- Hot Code Replace returns "Cannot find any changed classes for hot replace!" message. #1481.
- Add support for running Java 21 "Unnamed classes and Instance main method". #1444.
- Move 'Run/Debug Java' menus to the same group as the other Java menus within File Explorer. #1447.
- Fix the java.lang.NoClassDefFoundError when triggering code completion in DEBUG CONSOLE. See java-debug#534.
-
Breakpoint doesn't work on lambdas which returns a generic type. See java-debug#498, #1413 and #1414.
-
Breakpoint with inline lambdas work only with last one. See #1410.
-
StepInto method target doesn't work if the method is part of wrapped expression. See java-debug#519.
Thanks to Gayan Perera for contribution in fixing multiple bugs.
- Don't duplicate build reference projects when building a Gradle project managed by Build Server. java-debug#511.
- Cannot find Java process when using "Attach by Process ID". #1388. Thanks to owl-from-hogvarts for contribution.
- Code completion in DEBUG CONSOLE now adds fully qualified names for unimported classes. See #1246.
- Code completion in DEBUG CONSOLE now displays package names for suggested types. See java-debug#505.
- Integrate the build support for Gradle build server project. See #1372, java-debug#503
- Respect the setting 'java.debug.settings.forceBuildBeforeLaunch' even if autobuild is disabled. See #1380.
- Automatically refresh the CALL STACK view when the attached sources for frames have changed. See #1370.
- Remove marketplace preview flag. See #1369.
- Use the setting
java.debug.settings.debugSupportOnDecompiledSource
to enable/disable debugging support on the decompiled source code. This feature requires Language Support for Java by Red Hat@1.20.0 or higher. See #1356.
- NPE when adding lambda breakpoints in reactive projects. See java-debug#477. Thanks to Gayan Perera for contribution.
- Lambda breakpoint on the first line of a method does not work. See java-debug#488. Thanks to Gayan Perera for contribution.
- Add context menus "Auto/Manual Expand Lazy Variables" to Variables view to auto show 'toString()' value. See #1316.
- Fix the error 'compareVersions is not a function'. See #1307.
- Display the running launch config name in progress bar for transparency. See #1299.
- launch previously launched application if the current file isn't executable. See #1036.
- Reject invalid DAP request. See java-debug#466.
- Prioritize lookup the project source code during debugging. See #1215. Thanks to mozhuanzuojing for contribution.
- Optimize the build error report of "Build failed, do you want to continue?". #1214.
- Use the system encoding to generate the *.argfile. #1112.
- "shortenCommandLine": "argfile|auto" should include "vmArgs". #1254.
- Add "Step Into Target" feature to allow stepping directly into a specific function call when paused on a line. See #1192. Thanks to Gayan Perera for contribution.
- Exclude /node_modules/ from .vscode/launch.json searches. See #1234. Thanks to Brandon Cheng for contribution.
- Conditional Breakpoint got error code in reply:504. See #1250.
- Visualize the inline breakpoint locations. See #1193.
- Show an extra column cursor when an inline breakpoint is hit. See #1202.
- Support JEP 425: Virtual Threads (JDK 19). See #1159.
- Enable async jdwp based on network latency for auto mode. See java-debug#447.
- NPE when stopping JDT.LS. See java-debug#448.
- Experimental: Support processing JDWP commands asynchronously to improve response speed of remote debugging. It's only enabled by default on VS Code Insiders. You can also opt-in by setting
java.debug.settings.jdwp.async
. See #1208 and java-debug#436. - Add support to specify Java executable via the property
javaExec
in launch.json. See #1198. Thanks to Gayan Perera for contribution. - Add support for lambda breakpoints. See java-debug#427. Thanks to Gayan Perera for contribution.
- Support adding function breakpoints from the editor gutter. java-debug#426. Thanks to Gayan Perera for contribution.
- Show target VM exceptions as result in evaluate requests. java-debug#428. Thanks to Mathias Fußenegger for contribution.
- Support function breakpoints, see #258. The current version support adding a function breakpoint with the syntax as
FullyQualifiedClassName#methodName
(e.g.java.util.ArrayList#add
). Thanks to Gayan Perera for contribution.
- Mark native frames and unavailable methods as subtle. java-debug#409. Thanks to Mathias Fußenegger for contribution.
- Provide "Stop Java" button when triggering "Run Java" action. #1166.
- [API] Support DAP request
processId
and eventprocessid
to get the exact pid of current running Java process. java-debug#413.
- Naming Java terminals with different names. #1164.
- Enable Java terminal link provider on all terminals. #1168.
- Disable HCR button when running Java without debugging. #1167.
- Update command id to 'java.project.addToSourcePath.command'. #1152.
- Fix extension version. #1146.
- Support lazy loading object values from toString(). java-debug#401.
- API - Provide an api to query the processId of the debugging Java process. java-debug#399.
- Print logpoints to debug console. #710. Thanks to James Clark for contribution.
- VM launch failure doesn't report a useful error. java-debug#397. Thanks to Karl von Randow for contribution.
- Engineering - Fix problemMatcher patterns for the watch task. #1137. Thanks to James Clark for contribution.
- Thanks for the contribution from Mu-Tsun Tsai. Add zh-tw locale. #1087.
- Change the inline button to debug icon. #1108.
- Improve the search performance of resolving main class. java-debug#395.
- If mainClass not specified, it will find main classes not belonging to current workspace. #1098.
- Update CONTRIBUTING docs. #1105.
- Troubleshooting Guide for Encoding Issues on Windows. See Troubleshooting_encoding.
- Address encoding issues on Windows. #1077.
- Encoding - launcher.bat could not pass on redirected input into the java program being debugged. microsoft/vscode-java-pack#756.
- Encoding - Launching BAT for UTF-8 fix is incompatible with Security Policies disallowing BAT execution. #646.
- Encoding - Non-ASCII char support for Windows terminals. #622.
- Encoding - [Windows non-ASCII folder] Error: Could not find or load main class. #623.
- Step filter in the settings.json is not working. #1085.
- Contribution from John Grant: Support multiline values in envFile. #1061.
- Contribution from Adrien Piquerez. Fix NPE when using step filter. microsoft/java-debug#387.
- Contribution from Douglas M. Barcellos. Update telemetry setting declaration in README. #1084.
- Adopt new createStatusBarItem API for id and name properties. #1020.
- Unicode character in class name will fail to run. #780.
- Launching apps which require both a modulepath and a classpath doesn't work with shortenCommandLine="argfile". #1047.
- Debugger fails to load variable values due to java.lang.OutOfMemoryError. #1044.
- Fix privacy in the logger. PR#1048.
- Add link to check detatils while reporting debugging progress. PR#1034.
- Catch up build errors before running a Java application. #949.
- HotFix: After upgrade from vscode-java v0.77.0 to v0.78.0 can't debug tests. #995.
- Support inline values feature. PR#977.
- Show VARIABLES with different data views. PR#982.
- Adopt new APIs from vscode-tas-client. #974.
- Adopt workspaceTrust in package.json. PR#988.
- Engineering: Clean up deprecated logs. PR#987.
- Breakpoints inside record methods don't work. #973.
- Support environment variable for port number in launch.json debug configuration. #962.
- Thanks for the contribution from ZingBlue: Spelling fix. #968.
- Cannot launch debug session using JDK 16. #970.
- Adopt TAS client for A/B testing. PR#959.
- Update to new product logo. PR#952.
- Adopt new 'run' menu in editor title. PR#956,PR#960.
- Engineering - Enable GitHub Actions. PR#951.
- Support envFile option in launch.json. #523.
- Git bash failed to execute Run/Debug when Windows username have blank space. #678.
- TEMP folder with spaces breaks debugger process. #822.
- The sort of completion list in DEBUG CONSOLE is different from that in editor. #909.
- The program failed to run in terminal if clicking run button several times in succession. #924.
- Fix vulnerabilities. #935, #936.
- Add run button as inline button in Java Project Explorer. PR#900.
- Use progress to hint the current build status whenever you trigger the Run and Debug features. PR#919.
- Thanks for the contribution from pablojimpas: Spanish localization support. PR#904.
- Make the run buttons in editor toolbar more context-aware. PR#898.
- Update the group name of the Run and Debug menus registered in the Java Project Explorer. PR#908.
- Simplify the name label of the launch configuration. PR#921.
- Debt: Enable more tslint rules. PR#914,PR#918.
- Find Java version from release file. #910.
- Jump to source when clicking the stack trace printed to the terminal. PR#890.
- Contribute
Run
andDebug
menus to Project Explorer. #878. - Provide a user setting
java.debug.settings.vmArgs
to set the default VM arguments to launch your program. #220,#876. - Provide a user setting
java.debug.settings.onBuildFailureProceed
to force the debug session to proceed when build fails. #888.
- Allow cancelling the outdated codelens job. PR#881.
- Fix the wrong auto-completion result when typing the evaluation expression in DEBUG CONSOLE. #880.
- Fix the error 'UNC path is missing sharename: \\java'. #882.
- Use the correct runtime to validate the JVM versions between the debugger and debuggee. PR#353.
- Add run/debug buttons to editor title bar for single file debugging. #834.
- Add user settings
java.debug.settings.jdwp.limitOfVariablesPerJdwpRequest
andjava.debug.settings.jdwp.requestTimeout
to control JDWP request. #862,#863.
- Reduce the frequency of JDWP requests to improve performance when expanding VARIABLES view. #347.
- Migrate the legacy log to the telemetry wrapper. #866.
- Fix Hot Code Replace error "Cannot find any changed classes for hot replace!". #855.
- Hot Code Replace always reports "Cannot find any changed classes for hot replace!". #850.
- Break on exception for "just my code". #756.
- Support step "just my code". #628.
- Show return value of a method. #660.
- Support "copy value" from Variable viewlet. #819.
- From upstream jdt: support using lambda and reference expressions in debug evaluation. #281.
- From upstream jdt: support evaluating local variables in the lambda body. #754.
- Always give UI feedback whenever you click ⚡ button to apply code changes. #833.
- Automatically add -XX:+ShowCodeDetailsInExceptionMessages when launching your program with Java 14. #797.
- Adopt the new resolveVariable API. #750.
- Adopt DebugAdapterDescriptorFactor API. #751.
- Give a response when you trigger debugging in LightWeight mode. #841.
- Failed to get variables. Reason: com.sun.jdi.InvalidStackFrameException. #767.
- Render the source link for stack trace from Java modules. #824.
- Support picking a Java process to auto attach. #759.
- When running the Gradle application, the test scope is not filtered out. #715.
- Conditional breakpoint fails in the multi thread scenario. #782.
- Show a warning message about the Unsupported JDK error. #789.
- vmArgs in launch.json does not accept an array of strings. #778.
- Activate the extension before execute Java extension commands. #775.
- Contribution from Mathias Fußenegger: Extend readme with basic low level usage instructions. java-debug#327.
Thank Mathias Fußenegger for contribution.
- Fix the Error: Could not find or load main class @x.y.z.argfile. #769.
- Cannot hit breakpoint at the class using Java 13 Text Blocks. #773.
- Provide context menu to continue/pause all/other threads. #748.
- Contribution from bhoppeadoy: Add user setting
java.debug.settings.numericPrecision
to set the numeric precision when formatting doubles in "Variables" or "Debug Console" viewlet. #745.
- Use project's Java runtime to launch the application. #753.
- Restart stop but not start the program. #752.
- Contribution from xiaoyinl: Use HTTPS wherever possible. #732.
- Support breaking when value changes (a.k.a. Data Breakpoints). #654.
- Improve "Run Java" experience:
F5
will run the current file without generating launch.json. #724.
- Debug console will hang on Java exception stack trace. #719.
- Debug console won't automatically append
()
if selecting a method in completion list. #711, #691. - Cannot pass
vmArgs
array to Java 13 project. #703.
- Provide "Fix..." suggestions when "Build failed" occurs during launching the application. #358.
- Prompt to add the folder to source path if the running file isn't on classpath. #470.
- Provide samples for the commonly used debug configuration. See the doc.
- It's safe to keep running the run/debug codelens if the debug configuration fails to save into the launch.json. PR#673.
- Improve the error handling when running the file via the context "run" or "debug" menu. PR#679.
- Support searching main classes from the workspace invisible project. PR#305.
- Update troubleshooting doc for class not found error. See the doc.
- Update troubleshooting doc for build failed error. See the doc.
- Show Run/Debug buttons when hover on a main method. #657.
- Debugger just broken with git bash as the default shell on Windows. #642.
- [Mac] Failed to launch debuggee in terminal with TimeoutException. #637, #651.
- Pop an error message when click ⚡ HCR button in the Run mode. PR#665.
- Don't escape single quote of the program args. PR#668.
- Add menu entries to
Run
andDebug
a Java application when you right click a Java file in file explorer or opened editor. #626.
- Remove hard dependency of redhat.java. PR#617.
- Change the default console to integrated terminal. #605.
- Java language server is activated by mistake when debugging a non-Java project. #238.
- [Windows]
integratedTerminal
console does not showing unicode characters. #524. - Contribution from pi1024e: Fix UI typos. PR#630.
Thank pi1024e for contribution.
- Fix: Adding wrong jar version to the classpath. #566.
- Fix: Adding wrong classpath at runtime for multi modules maven projects. #584.
- Contribution from tom-shan: Should break earlier when destroying temporary launch file. PR#280.
Thank tom-shan for contribution.
- Add a debug toolbar button to apply the changed classes to the running application. #559.
- Show toString() values in Variable window and hover tooltip. #315, #364.
- Add a global user setting
java.debug.settings.console
to specify the default console to launch your program. PR#594.
- Fix: The debug toolbar doesn't close after the program running in external terminal exits. #582.
- Fix: Cannot stop the debugging process automatically in attach mode. java-debug#273.
- Enable "Logical Structure" view for Map and Collection variables. #227.
- Add the source hyperlinks for the stack traces in the Debug Console output. #490, #506.
- Automatically add
--enable-preview
to vmArgs when necessary. #553.
- Disable
java.debug.settings.showStaticVariables
by default to not show the static fields.
- Fix: Debug Console does not support autocomplete when a .class file is open. #535.
- Popup the exception details via a UI widget when an exception breakpoint is hit. #522.
- Add a new debug configuration
shortenCommandLine
to fix the issue "CreateProcess error=206, The filename or extension is too long". #110.
- Provide Chinese localized settings page for Java debugger, including launch.json configuration and user settings. #472, #477.
- Add new user settings
java.debug.settings.forceBuildBeforeLaunch
to control whether to build the workspace before Run/Debug. #462. - F5 will auto launch the current Java file if
mainClass
in launch.json is set to the variable${file}
. #431
- Simplify generated launch.json. #476.
- Remove the emoji before Run/Debug CodeLens. #475.
- Use
vscode.open
api instead ofopn
library. #479.
- Fix the main class isn't unique issue. #420.
- Contribution from Thad House: Add new user settings
java.debug.settings.enableRunDebugCodeLens
to enable/disable Run|Debug Code Lenses on main methods. #464. - Contribution from Julien Russo: Add italian translation for extension configuration. PR#463.
Thank Thad House and Julien Russo for contribution.
- Fix: Code Lenses for Run/Debug links on main methods don't show up immediately. #438.
- Fix: It throws "ConfigError: 'mymodule/App' is not a valid class name." for java 9 program. #437.
- Fix: Cannot run from src/test anymore. #413.
- Fix: It throws InvalidStackFrameException during evaluating on conditional breakpoint. #369.
- Fix: The launch command for internalConsole is different from integratedTerminal. #440.
- Use code lens to run java program in a much simpler way. #375.
- Make args/vmArgs accept an array. #389.
- Make mainClass accept variables. #85.
- Fix: Still include test classes in classpaths when auto resolve maven project. #378.
- Fix: Duplicate class path during launching. #370.
- Fix: Update Active Editor oct icon to file instead of clock. #403.
- Fix: Launching the debuggee with the same JDK as java language server instead of JRE. #366.
- Fix: Avoid pop up error window many times for logpoints in a loop. #360.
- Fix: Debug buttons disabled. #411
- Fix: StepResponse/ContinueResponse should be sent before StoppedEvent. java-debug#134
- Fix: Runtime scope class path entries are missing. #402.
- Fix:
env
config in launch.json not respected. #393.
- Start without debugging. See #351.
- Add the validation to mainClass and projectName before launching. See #355.
- Add "Learn More" link jumps to the associated troubleshooting paragraph #360.
- Put recently used main class in the top #350.
- Enable evaluation for hovers #297.
- Distinguish user errors and system errors #288.
- Fix: vulnerabilities issue PR#356.
- Fix: NPE for CompletionsProvider PR#206.
- Fix: Debugger slow when watching variables #305.
- Fix: Should not include test classes in classpath #111.
- Add a troubleshooting page for common errors. See the troubleshooting guide.
- Build and publish the Java Debug Server plugin as p2 artifacts. See PR#191, PR#192.
- Auto select Java Debugger for .java file. See PR#329.
- Improve the launch.json auto-generation UX. See PR#342.
- Improve the logger coverage for the error response. See PR#190.
- Fix the attach error in JDK 10. See PR#187.
- Fix the Java Debug Server plugin build error in JDK 10. See PR#194.
- Add support for Logpoint. The minimum compatible VS Code version is 1.22. See the feature request #272
- Contribution from LunarArcanus: Fix the grammar issue in README. See PR#306.
- Fix the project's build errors in JDK 9/10. See PR#178
- Support auto-complete feature in debug console view. See the feature request #237
- Fix the ObjectCollectedException when enabling ExceptionBreakpoint. See Issue #182
- Fix the issue #277 that the debugger doesn't stop on caught/uncaught exceptions. See PR #172
- Fix the issue #273 that Chinese characters directory will cause messy code during stack trace's source looking up. See PR #170
- Support restart frame. See PR#160
- Enable hot code replace by default. See PR#263
- Wait for building successfully before launch debug session. See PR#257
- Automatically detect projectName when only one main class or project available. See PR#164
- Support conditional breakpoints. See PR#153, PR#154, PR#156
- Support prompting user for program arguments. See PR#245
- Fix the unsupported breakpoint at method entry/exit issue. See PR#129
- Fix the issue when the projectName is not specified, the expression evaluation doesn't work. See PR#156
- Fix VMDisconnectionException in HCR. See PR#150
- Support hot code replace. See PR#225
- Support step filters when stepping. See PR#155
- Support expression evaluation. See PR#126, PR#131
- Publish the binaries to the maven central repository. See PR#132
- Adopt new VSCode 1.19.0 debug activation events. See PR#196
- Looking up the stack frame's associated source file from source containers to improve searching perf. See PR#127
- Add
stopOnEntry
andconsole
options for launch.json. See PR#177 - Support console input by launching the program in the integrated/external terminal. See PR#122
- Add debugging settings:
java.debug.settings.showHex
,java.debug.settings.showStaticVariables
,java.debug.settings.showQualifiedNames
,java.debug.settings.maxStringLength
. See README for details - Support project scope when resolving multiple-root project. See PR#174
- Fix single file build issue. See Issue#167
- Fix perf issue when debugging with "stopOnEntry". See PR#115
- Fix the unable to start debugging issueIssue#146
- Support debugging java 9 project. See Issue#47
- Support debugging standalone java file. See Issue#94
- Support "cwd" and "env" in launch.json. See Issue#12, Issue#75
- Build workspace before starting debugger. See Issue#32
- Show progress when initializing the launch.json. See PR#106
- Get debug settings from VSCode user preferences. See PR#135,PR#94
- Fix perf issue on getting locations of breakpoint. See Issue#49
- Show warning message when the debugger and the debuggee run in the different versions of JVMs. See Issue#30
- Automatically resolve the main class during launching. See Issue#9
- Fully support external source files together with the changes from VSCode. See PR#58
- Adopt the new DebugConfigurationProvider protocol of VS Code. See PR#87
- Display the function names in the format of ClassName.MethodName(Parameter List...).. See PR#73
- Improve the call stack display info for the files without sources. See PR#72
- Fix the inconsistent URI issue when set breakpoint request. See PR#84
- Avoid two stopped events for step and breakpoint. See Issue#14
- Fix the issue that JDT search might return multiple results from the same project. See Issue#21
- Avoid send error messages after debugger adapter stopped. See PR#75
- Fix several exception cases. See PR#64, PR#67, PR#74
- Launch/Attach
- Breakpoints
- Exceptions
- Pause & Continue
- Step In/Out/Over
- Variables
- Callstacks
- Threads
- Debug console