annotate agent/doc/c2replay.html @ 9346:52fde777a605

Implemented improvements to the generated source code.
author Christian Humer <christian.humer@gmail.com>
date Fri, 26 Apr 2013 22:43:37 +0200
parents bd7a7ce2e264
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6972
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
1 <html>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
2 <head>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
3 <title>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
4 C2 Replay
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
5 </title>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
6 </head>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
7 <body>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
8
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
9 <h1>C2 compiler replay</h1>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
10 <p>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
11 The C2 compiler replay is a function to repeat the compiling process from a crashed java process in compiled method<br>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
12 This function only exists in debug version of VM
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
13 </p>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
14 <h2>Usage</h2>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
15 <pre>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
16 First, use SA to attach to the core file, if suceeded, do
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
17 clhsdb>dumpreplaydata <address> | -a | <thread_id> [> replay.txt]
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
18 create file replay.txt, address is address of Method, or nmethod(CodeBlob)
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
19 clhsdb>buildreplayjars [all | boot | app]
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
20 create files:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
21 all:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
22 app.jar, boot.jar
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
23 boot:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
24 boot.jar
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
25 app:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
26 app.jar
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
27 exit SA now.
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
28 Second, use the obtained replay text file, replay.txt and jar files, app.jar and boot.jar, using debug version of java
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
29 java -Xbootclasspath/p:boot.jar -cp app.jar -XX:ReplayDataFile=<datafile> -XX:+ReplayCompiles ....
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
30 This will replay the compiling process.
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
31
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
32 With ReplayCompiles, the replay will recompile all the methods in app.jar, and in boot.jar to emulate the process in java app.
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
33
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
34 notes:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
35 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.
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
36 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>
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
37
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
38 Use this tool to dump VM type library:
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
39 vmstructsdump libjvm.so > <type_name>.db
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
40
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
41 set env SA_TYPEDB=<type_name>.db (refer different shell for set envs)