RFR: 8264593: debug.cpp utilities should be available in product builds.
Vladimir Ivanov
vlivanov at openjdk.java.net
Mon Apr 26 17:27:11 UTC 2021
On Thu, 1 Apr 2021 14:05:42 GMT, Kevin Walls <kevinw at openjdk.org> wrote:
> This is a pull request to move the ifndef PRODUCT in src/hotspot/share/utilities/debug.cpp, and add JNIEXPORT for symbol visibility on Windows.
>
> With these changes, we can use gdb on a live Linux process of a product build JVM, and call debug.cpp utilities.
> e.g. "call universe()", or "call hsfind(0xADDRESS)".
>
> (I found that making calls in the JLI_Launch thread (gdb's thread 1) will crash, but switching first to a JavaThread works.)
>
> In Visual Studio use the Immediate window, just type the function name. Verified that without the changes, the symbols can't be seen/called.
>
> Printing happens on the LIVE jvm's tty (not the gdb session).
>
>
> WizardMode is a develop flag, can't be changed in a product build, so avoid changing that in the debug() utility.
>
>
> pa() is left ifndef PRODUCT, as the class AllocatedObj is ifndef PRODUCT in src/hotspot/share/memory/allocation.hpp
>
>
> pns(...) uses frame fr(sp, fp, pc); but we have an ifndef PRODUCT on frame constructor: frame(void* sp, void* fp, void* pc);
> Leave pns and pns2 ifndef PRODUCT.
>
>
> File size changes:
> Linux: libjvm.so becomes 8904 bytes larger.
> Windows: jvm.dll becomes 6656 bytes larger.
Looks good. It's a very valuable improvement in debuggability of product binaries.
I'm surprised that all the diagnostic code debug commands rely on is already available in product binaries.
-------------
Marked as reviewed by vlivanov (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/3307
More information about the hotspot-dev
mailing list