RFR: 8264593: debug.cpp utilities should be available in product builds.
Kevin Walls
kevinw at openjdk.java.net
Thu Apr 1 14:14:39 UTC 2021
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.
-------------
Commit messages:
- 8264593: debug.cpp utilities should be available in product builds.
Changes: https://git.openjdk.java.net/jdk/pull/3307/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=3307&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8264593
Stats: 42 lines in 1 file changed: 3 ins; 7 del; 32 mod
Patch: https://git.openjdk.java.net/jdk/pull/3307.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3307/head:pull/3307
PR: https://git.openjdk.java.net/jdk/pull/3307
More information about the hotspot-dev
mailing list