Mercurial > hg > truffle
annotate agent/doc/c2replay.html @ 7432:0b3d19153cc6
8001028: Improve GC option handling
Summary: If there are not enough native resources to create the ReferenceHandler or Finalizer Java threads, the VM will attempt to throw an OOME before the java.lang.Class class has been initialized. This can result in assertion failures and other crashes. Move the initialization of the java.lang.Class class to just before the initialization of the java.lang.ref.Finalizer class.
Reviewed-by: jwilhelm, dholmes, coleenp
author | johnc |
---|---|
date | Wed, 12 Dec 2012 12:07:32 -0800 |
parents | bd7a7ce2e264 |
children |
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) |