0a434e425b
Reviewed-by: kvn, vlivanov
42 lines
1.7 KiB
HTML
42 lines
1.7 KiB
HTML
<html>
|
|
<head>
|
|
<title>
|
|
Replay
|
|
</title>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>Compiler replay</h1>
|
|
<p>
|
|
The compiler replay is a function to repeat the compiling process from a crashed java process in compiled method<br>
|
|
This function only exists in debug version of VM
|
|
</p>
|
|
<h2>Usage</h2>
|
|
<pre>
|
|
First, use SA to attach to the core file, if succeeded, do
|
|
hsdb> dumpreplaydata <address> | -a | <thread_id> [> replay.txt]
|
|
create file replay.txt, address is address of Method, or nmethod(CodeBlob)
|
|
hsdb> buildreplayjars [all | boot | app]
|
|
create files:
|
|
all:
|
|
app.jar, boot.jar
|
|
boot:
|
|
boot.jar
|
|
app:
|
|
app.jar
|
|
exit SA now.
|
|
Second, use the obtained replay text file, replay.txt and jar files, app.jar and boot.jar, using debug version of java
|
|
java -Xbootclasspath/p:boot.jar -cp app.jar -XX:ReplayDataFile=<datafile> -XX:+ReplayCompiles ....
|
|
This will replay the compiling process.
|
|
|
|
With ReplayCompiles, the replay will recompile all the methods in app.jar, and in boot.jar to emulate the process in java app.
|
|
|
|
notes:
|
|
1) Most time, we don't need the boot.jar which is the classes loaded from JDK. It will be only modified when an agent(JVMDI) is running and modifies the classes.
|
|
2) If encounter error as "<flag>" not found, that means the SA is using a VMStructs which is different from the one with corefile. In this case, SA has a utility tool vmstructsdump which is located at agent/src/os/<os>/proc/<os_platform>
|
|
|
|
Use this tool to dump VM type library:
|
|
vmstructsdump libjvm.so > <type_name>.db
|
|
|
|
set env SA_TYPEDB=<type_name>.db (refer different shell for set envs)
|