RFR: 8237192: Generate stripped/public pdbs on Windows for jdk images
Erik Joelsson
erik.joelsson at oracle.com
Fri Jan 17 15:20:09 UTC 2020
Hello Matthias,
Providing these stripped pdb files in the distribution is a good idea,
but finding a good solution in the build is unfortunately more
complicated than this. The JDK image we ship should (with very few
exceptions) be the result of running jlink on all the jmods. If a user
runs jlink and includes all the jmods we ship with the JDK, the result
should be essentially equivalent to the original JDK image. The way the
stripped pdb files are included in the bundles sort of at the last
second of the build here breaks this property. Any user generated image
would miss the stripped pdb files since they aren't packaged in the jmods.
To properly implement this, care will need to be taken to juggle the two
sets of pdb files around, making sure each build and test use case has
the correct one in place where and when it's needed. Quite possibly, we
cannot cover all use cases with one build configuration. Developers
needing the full debug symbols when debugging locally would likely need
to disable the stripped symbols so they get the full symbols everywhere.
Possibly this would need to be the default for debug builds and
configurable for release builds.
/Erik
On 2020-01-17 00:44, Baesken, Matthias wrote:
> Hello, please review this change related to stripped/"public" pdb file generation on Windows .
>
> Currently the JDK bundle on Windows does not contain pdb files (full pdb files are in a separate symbols bundle).
> This leads currently to bad native stack traces e.g. when crashes occur.
> One reason not to deliver the full pdb files might be the large size of these files.
>
> However there exist also "public" or stripped pdb files on Windows, see :
>
> https://docs.microsoft.com/en-us/cpp/build/reference/pdbstripped-strip-private-symbols?view=vs-2017
>
> Those are much smaller (often only 10-20% of the full pdb files) and they offer a good compromise (no "file:linenumber" info in the native stacks but at least the function name+hex-offset is visible)
> to delivering full pdbs in the JDK.
>
> Example sizes for the currently built full pdbs / stripped pdbs from VS2017 based 64bit build of jdk/jdk :
> jvm.pdb : 73,1 MB / 9,46 MB
> awt.pdb : 7,05 MB / 1,48 MB
>
> The patch adds generation of stripped pdb files to the Windows build.
> Additionally those files are put into the JDK bundle (while the symbols bundle still gets the full pdb files ) .
>
>
> Bug/webrev :
>
> https://bugs.openjdk.java.net/browse/JDK-8237192
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8237192.0/
>
>
> Thanks, Matthias
More information about the build-dev
mailing list