Mercurial > hg > truffle
diff agent/doc/cireplay.html @ 10197:7b23cb975cf2
8011675: adding compilation level to replay data
Reviewed-by: kvn, vlivanov
author | iignatyev |
---|---|
date | Thu, 25 Apr 2013 11:09:24 -0700 |
parents | agent/doc/c2replay.html@bd7a7ce2e264 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/doc/cireplay.html Thu Apr 25 11:09:24 2013 -0700 @@ -0,0 +1,41 @@ +<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)