RFR: 8347007: --strip-debug removes parameter names included with -parameters [v3]

Alan Bateman alanb at openjdk.org
Thu Oct 9 13:52:59 UTC 2025


On Thu, 2 Oct 2025 05:40:49 GMT, Henry Jen <henryjen at openjdk.org> wrote:

>> Since parameters is an opt-in choice, it's more reasonable to consider that's desired information and make strip parameter names an opt-in choice as well.
>> 
>> This PR changes the default behavior of --strip-debug to keep parameter names when it's available. Add opt-in mechanism,
>> via the strip-java-debug-attributes plugin by using argument `--strip-java-debug-attributes=+parameter-names`.
>> 
>> The --strip-debug option is a little bit odd, as it's a main option as well as a plugin option to enable the DefaultStripDebugPlugin, which strip native debug information on platform support the feature, and strip java debug information. In this PR, we chose to support only one mechanism to enable strip parameter names, so we would disable the embed StripJavaDebugAttributesPlugin when StripJavaDebugAttributesPlugin is enabled.
>> 
>> The StripParameterNamesTest illustrate and verify parameter names use cases, mainly focus on argument processing and the parameter names. We didn't verify the regular debug info as that's covered by existing test.
>> 
>> -- Update
>> 
>> The latest change removed the support of strip parameter names, as the MethodParameters attribute is considered necessary attribute to fulfill Java Language Spec even though this attribute is considered optional by JVM spec.
>
> Henry Jen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   MethodParameters attribute should not be removed

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 67:

> 65:     private static List<Jmod> testJmods = new ArrayList<>();
> 66: 
> 67:     record Jmod(Path moduleDir, boolean withDebugInfo, boolean withParameterNames) {}

Is the withDebugInfo component used?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 221:

> 219:     @Test
> 220:     public void testWithoutStripParameterName() throws Exception {
> 221:         var imageDir = Paths.get("img");

(You can replace all uses of Paths.get with Path.of if you want)

Are we missing a 4th test to test --strip-java-debug-attributes on its own?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 221:

> 219:     @Test
> 220:     public void testWithoutStripParameterName() throws Exception {
> 221:         var imageDir = Paths.get("img");

(You can replace all uses of Paths.get with Path.of if you want)

Are we missing a 4th test to test --strip-java-debug-attributes on its own?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 221:

> 219:     @Test
> 220:     public void testWithoutStripParameterName() throws Exception {
> 221:         var imageDir = Paths.get("img");

(You can replace all uses of Paths.get with Path.of if you want)

Are we missing a 4th test to test --strip-java-debug-attributes on its own?

test/jdk/tools/jlink/plugins/StripParameterNamesTest.java line 221:

> 219:     @Test
> 220:     public void testWithoutStripParameterName() throws Exception {
> 221:         var imageDir = Paths.get("img");

(You can replace all uses of Paths.get with Path.of if you want)

Are we missing a 4th test to test --strip-java-debug-attributes on its own?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416862433
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416862740
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416866887
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416869328
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416869655
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416870113
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416870371
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416866546
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416867294
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416868671
PR Review Comment: https://git.openjdk.org/jdk/pull/27566#discussion_r2416868957


More information about the core-libs-dev mailing list