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