unwinding java frame

Krystal Mo krystal.mo at oracle.com
Mon Oct 29 12:39:57 PDT 2012


Hi Sagar,

If you're running on a debug build (fastdebug/jvmg) of HotSpot, from gdb you
could invoke helper functions defined in src/share/vm/utilities/debug.cpp to
gain easier access to HotSpot's internal data structures.

Specifically,
   to print the stack trace of the current thread, use ps();
   to print the stack trace of all thread, use pss();

I've attached an example at the end of this email.

There are of course other ways of doing it in gdb, that may or may not 
require
a debug build.

Instead of gdb, I use SA-based (Serviceability Agent) tools more often,
e.g. jstack -m. It works on live Java processes and core dumps, and doesn't
require a debug build of HotSpot.

Hope it helps,
- Kris

Example:

Start a Groovy shell, and then attach gdb onto it:

kmo at ubuntu:~
$ jps
24548 Jps
24514 GroovyStarter
kmo at ubuntu:~
$ sudo gdb
GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>.
(gdb) attach 24514
Attaching to process 24514
Reading symbols from /home/kmo/testjdk/hotspot-comp/bin/java...(no 
debugging symbols found)...done.
Reading symbols from /lib/x86_64-linux-gnu/libpthread.so.0...(no 
debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7f29180c9700 (LWP 24541)]
[New Thread 0x7f29136fd700 (LWP 24538)]
[New Thread 0x7f29137fe700 (LWP 24537)]
[New Thread 0x7f291827f700 (LWP 24536)]
[New Thread 0x7f2920130700 (LWP 24535)]
[New Thread 0x7f2920231700 (LWP 24534)]
[New Thread 0x7f2920332700 (LWP 24533)]
[New Thread 0x7f2920433700 (LWP 24532)]
[New Thread 0x7f2920534700 (LWP 24531)]
[New Thread 0x7f2920d18700 (LWP 24530)]
[New Thread 0x7f292c14a700 (LWP 24529)]
[New Thread 0x7f2920e19700 (LWP 24528)]
[New Thread 0x7f292dd33700 (LWP 24527)]
[New Thread 0x7f292de34700 (LWP 24526)]
[New Thread 0x7f292df35700 (LWP 24525)]
[New Thread 0x7f292e036700 (LWP 24524)]
[New Thread 0x7f2932272700 (LWP 24523)]
Loaded symbols for /lib/x86_64-linux-gnu/libpthread.so.0
Reading symbols from 
/home/kmo/testjdk/hotspot-comp/bin/../jre/lib/amd64/jli/libjli.so...(no 
debugging symbols found)...done.
Loaded symbols for 
/home/kmo/testjdk/hotspot-comp/bin/../jre/lib/amd64/jli/libjli.so
Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...(no debugging 
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libdl.so.2
Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...(no debugging 
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols 
found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/server/libjvm.so...Reading 
symbols from 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/server/libjvm.debuginfo...done.
done.
Loaded symbols for 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/server/libjvm.so
Reading symbols from /lib/x86_64-linux-gnu/libm.so.6...(no debugging 
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libm.so.6
Reading symbols from /lib/x86_64-linux-gnu/librt.so.1...(no debugging 
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/librt.so.1
Reading symbols from 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libverify.so...(no 
debugging symbols found)...done.
Loaded symbols for /home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libverify.so
Reading symbols from 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libjava.so...(no debugging 
symbols found)...done.
Loaded symbols for /home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libjava.so
Reading symbols from /lib/x86_64-linux-gnu/libnss_compat.so.2...(no 
debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_compat.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnsl.so.1...(no debugging 
symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnsl.so.1
Reading symbols from /lib/x86_64-linux-gnu/libnss_nis.so.2...(no 
debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_nis.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnss_files.so.2...(no 
debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_files.so.2
Reading symbols from 
/home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libzip.so...(no debugging 
symbols found)...done.
Loaded symbols for /home/kmo/testjdk/hotspot-comp/jre/lib/amd64/libzip.so
Reading symbols from /tmp/libjansi-64-1.6.so...done.
Loaded symbols for /tmp/libjansi-64-1.6.so
0x00007f2931e57148 in pthread_join () from 
/lib/x86_64-linux-gnu/libpthread.so.0
(gdb) info threads
   Id   Target Id         Frame
   18   Thread 0x7f2932272700 (LWP 24523) "java" 0x00007f2931e5cd2d in 
read () from /lib/x86_64-linux-gnu/libpthread.so.0
   17   Thread 0x7f292e036700 (LWP 24524) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   16   Thread 0x7f292df35700 (LWP 24525) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   15   Thread 0x7f292de34700 (LWP 24526) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   14   Thread 0x7f292dd33700 (LWP 24527) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   13   Thread 0x7f2920e19700 (LWP 24528) "java" 0x00007f2931e5a0fe in 
pthread_cond_timedwait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   12   Thread 0x7f292c14a700 (LWP 24529) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   11   Thread 0x7f2920d18700 (LWP 24530) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   10   Thread 0x7f2920534700 (LWP 24531) "java" 0x00007f2931e5bfd0 in 
sem_wait () from /lib/x86_64-linux-gnu/libpthread.so.0
   9    Thread 0x7f2920433700 (LWP 24532) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   8    Thread 0x7f2920332700 (LWP 24533) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   7    Thread 0x7f2920231700 (LWP 24534) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   6    Thread 0x7f2920130700 (LWP 24535) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   5    Thread 0x7f291827f700 (LWP 24536) "java" 0x00007f2931e5a0fe in 
pthread_cond_timedwait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   4    Thread 0x7f29137fe700 (LWP 24537) "java" 0x00007f2931e5a0fe in 
pthread_cond_timedwait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   3    Thread 0x7f29136fd700 (LWP 24538) "java" 0x00007f2931e59d84 in 
pthread_cond_wait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
   2    Thread 0x7f29180c9700 (LWP 24541) "java" 0x00007f2931e5a0fe in 
pthread_cond_timedwait@@GLIBC_2.3.2 ()
    from /lib/x86_64-linux-gnu/libpthread.so.0
* 1    Thread 0x7f2932274700 (LWP 24514) "java" 0x00007f2931e57148 in 
pthread_join () from /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) t 18
[Switching to thread 18 (Thread 0x7f2932272700 (LWP 24523))]
#0  0x00007f2931e5cd2d in read () from /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) print ps()
$1 = void
(gdb) quit
A debugging session is active.

     Inferior 1 [process 24514] will be detached.

Quit anyway? (y or n) y
Detaching from program: /home/kmo/testjdk/hotspot-comp/bin/java, process 
24514
kmo at ubuntu:~
$

(Note: the ps() function, and a couple others, expects the "current 
thread" to be a Java thread.
Be sure to switch the thread to a Java thread before invoking them in 
gdb, otherwise you'll crash the debuggee process.
In this example, I switched to thread 18 first, which is the "main" Java 
thread.)

You may be wondering where the result of ps() went, well, here it is:

kmo at ubuntu:~
$ groovysh
Groovy Shell (2.0.1, JVM: 1.8.0-ea)
Type 'help' or '\h' for help.
------------------------------------------------------------------------------------------------------------------------------------------
groovy:000>
"Executing ps"
  for thread: "main" #1 prio=5 os_prio=0 tid=0x00007f292800c000 
nid=0x5fcb runnable [0x00007f293226c000]
    java.lang.Thread.State: RUNNABLE
    JavaThread state: _thread_in_native
Thread: 0x00007f292800c000  [0x5fcb] State: _running _has_called_back 0 
_at_poll_safepoint 0
    JavaThread state: _thread_in_native

  1 - frame( sp=0x00007f293226ccc0, unextended_sp=0x00007f293226ccc0, 
fp=0x00007f293226cd20, pc=0x00007f2922023c0c)
java.io.FileInputStream.readBytes(Native Method)
  2 - frame( sp=0x00007f293226cd30, unextended_sp=0x00007f293226cd40, 
fp=0x00007f293226cda0, pc=0x00007f29220063f4)
java.io.FileInputStream.read(FileInputStream.java:231)
  3 - frame( sp=0x00007f293226cdb0, unextended_sp=0x00007f293226cdb0, 
fp=0x00007f293226ce10, pc=0x00007f29220063f4)
java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
  4 - frame( sp=0x00007f293226ce20, unextended_sp=0x00007f293226ce40, 
fp=0x00000007db2c2030, pc=0x00007f29222d3c38)
java.io.BufferedInputStream.read(BufferedInputStream.java:254)
  5 - frame( sp=0x00007f293226ce70, unextended_sp=0x00007f293226ce70, 
fp=0x00007f293226cec0, pc=0x00007f29220063f4)
jline.Terminal.readCharacter(Terminal.java:99)
  6 - frame( sp=0x00007f293226ced0, unextended_sp=0x00007f293226ced0, 
fp=0x00007f293226cf20, pc=0x00007f29220063f4)
jline.UnixTerminal.readVirtualKey(UnixTerminal.java:122)
  7 - frame( sp=0x00007f293226cf30, unextended_sp=0x00007f293226cf38, 
fp=0x00007f293226cf88, pc=0x00007f29220063f4)
jline.ConsoleReader.readVirtualKey(ConsoleReader.java:1606)
  8 - frame( sp=0x00007f293226cf98, unextended_sp=0x00007f293226cfa0, 
fp=0x00007f293226cfe8, pc=0x00007f29220063f4)
jline.ConsoleReader.readBinding(ConsoleReader.java:764)
  9 - frame( sp=0x00007f293226cff8, unextended_sp=0x00007f293226d008, 
fp=0x00007f293226d050, pc=0x00007f2922006453)
jline.ConsoleReader.readLine(ConsoleReader.java:511)
10 - frame( sp=0x00007f293226d060, unextended_sp=0x00007f293226d0a8, 
fp=0x00007f293226d100, pc=0x00007f2922006453)
jline.ConsoleReader.readLine(ConsoleReader.java:457)
11 - frame( sp=0x00007f293226d110, unextended_sp=0x00007f293226d110, 
fp=0x00007f293226d160, pc=0x00007f2922006453)
jline.ConsoleReader$readLine.call
12 - frame( sp=0x00007f293226d170, unextended_sp=0x00007f293226d170, 
fp=0x00007f293226d1c8, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
13 - frame( sp=0x00007f293226d1d8, unextended_sp=0x00007f293226d1d8, 
fp=0x00007f293226d230, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
14 - frame( sp=0x00007f293226d240, unextended_sp=0x00007f293226d240, 
fp=0x00007f293226d298, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
15 - frame( sp=0x00007f293226d2a8, unextended_sp=0x00007f293226d2a8, 
fp=0x00007f293226d300, pc=0x00007f2922006b01)
org.codehaus.groovy.tools.shell.InteractiveShellRunner.readLine(InteractiveShellRunner.groovy:89)
16 - frame( sp=0x00007f293226d310, unextended_sp=0x00007f293226d338, 
fp=0x00007f293226d380, pc=0x00007f2922006453)
org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:75)
17 - frame( sp=0x00007f293226d390, unextended_sp=0x00007f293226d3c0, 
fp=0x00007f293226d408, pc=0x00007f2922006570)
org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$work
C frame (sp=0x00007f293226d418 unextended sp=0x00007f293226d418, 
fp=0x00007f293226d480, pc=0x00007f2922000681)
(~Stub::call_stub)
      BufferBlob (0x00007f29220003d0) used for StubRoutines (1)

18 - frame( sp=0x00007f293226dcb0, unextended_sp=0x00007f293226dcb0, 
fp=0x00007f293226dd08, pc=0x00007f2922023c0c)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
19 - frame( sp=0x00007f293226dd18, unextended_sp=0x00007f293226dd28, 
fp=0x00007f293226dd80, pc=0x00007f2922006453)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
20 - frame( sp=0x00007f293226dd90, unextended_sp=0x00007f293226dd98, 
fp=0x00007f293226ddf0, pc=0x00007f2922006453)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
21 - frame( sp=0x00007f293226de00, unextended_sp=0x00007f293226de00, 
fp=0x00007f293226de58, pc=0x00007f2922006b01)
java.lang.reflect.Method.invoke(Method.java:474)
22 - frame( sp=0x00007f293226de68, unextended_sp=0x00007f293226de70, 
fp=0x00007f293226dec8, pc=0x00007f2922006453)
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
23 - frame( sp=0x00007f293226ded8, unextended_sp=0x00007f293226dee8, 
fp=0x00007f293226df40, pc=0x00007f2922006453)
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
24 - frame( sp=0x00007f293226df50, unextended_sp=0x00007f293226df58, 
fp=0x00007f293226dfb0, pc=0x00007f2922006453)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1074)
25 - frame( sp=0x00007f293226dfc0, unextended_sp=0x00007f293226e020, 
fp=0x00007f293226e098, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128)
26 - frame( sp=0x00007f293226e0a8, unextended_sp=0x00007f293226e0c0, 
fp=0x00007f293226e120, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:148)
27 - frame( sp=0x00007f293226e130, unextended_sp=0x00007f293226e130, 
fp=0x00007f293226e188, pc=0x00007f2922006453)
org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:100)
C frame (sp=0x00007f293226e198 unextended sp=0x00007f293226e1a8, 
fp=0x00007f293226e210, pc=0x00007f2922000681)
(~Stub::call_stub)
      BufferBlob (0x00007f29220003d0) used for StubRoutines (1)

28 - frame( sp=0x00007f293226ea40, unextended_sp=0x00007f293226ea40, 
fp=0x00007f293226ea98, pc=0x00007f2922023c0c)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
29 - frame( sp=0x00007f293226eaa8, unextended_sp=0x00007f293226eab8, 
fp=0x00007f293226eb10, pc=0x00007f2922006453)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
30 - frame( sp=0x00007f293226eb20, unextended_sp=0x00007f293226eb28, 
fp=0x00007f293226eb80, pc=0x00007f2922006453)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
31 - frame( sp=0x00007f293226eb90, unextended_sp=0x00007f293226eb90, 
fp=0x00007f293226ebe8, pc=0x00007f2922006b01)
java.lang.reflect.Method.invoke(Method.java:474)
32 - frame( sp=0x00007f293226ebf8, unextended_sp=0x00007f293226ec00, 
fp=0x00007f293226ec58, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:272)
33 - frame( sp=0x00007f293226ec68, unextended_sp=0x00007f293226ec78, 
fp=0x00007f293226ecd0, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:52)
34 - frame( sp=0x00007f293226ece0, unextended_sp=0x00007f293226ece8, 
fp=0x00007f293226ed40, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
35 - frame( sp=0x00007f293226ed50, unextended_sp=0x00007f293226ed50, 
fp=0x00007f293226eda8, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
36 - frame( sp=0x00007f293226edb8, unextended_sp=0x00007f293226edb8, 
fp=0x00007f293226ee10, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:137)
37 - frame( sp=0x00007f293226ee20, unextended_sp=0x00007f293226ee20, 
fp=0x00007f293226ee70, pc=0x00007f2922006b01)
org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:57)
38 - frame( sp=0x00007f293226ee80, unextended_sp=0x00007f293226eeb0, 
fp=0x00007f293226eef8, pc=0x00007f2922006278)
org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$2$run
C frame (sp=0x00007f293226ef08 unextended sp=0x00007f293226ef08, 
fp=0x00007f293226ef70, pc=0x00007f2922000681)
(~Stub::call_stub)
      BufferBlob (0x00007f29220003d0) used for StubRoutines (1)

39 - frame( sp=0x00007f293226f7a0, unextended_sp=0x00007f293226f7a0, 
fp=0x00007f293226f7f8, pc=0x00007f2922023c0c)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
40 - frame( sp=0x00007f293226f808, unextended_sp=0x00007f293226f818, 
fp=0x00007f293226f870, pc=0x00007f2922006453)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
41 - frame( sp=0x00007f293226f880, unextended_sp=0x00007f293226f888, 
fp=0x00007f293226f8e0, pc=0x00007f2922006453)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
42 - frame( sp=0x00007f293226f8f0, unextended_sp=0x00007f293226f8f0, 
fp=0x00007f293226f948, pc=0x00007f2922006b01)
java.lang.reflect.Method.invoke(Method.java:474)
43 - frame( sp=0x00007f293226f958, unextended_sp=0x00007f293226f960, 
fp=0x00007f293226f9b8, pc=0x00007f2922006453)
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
44 - frame( sp=0x00007f293226f9c8, unextended_sp=0x00007f293226f9d8, 
fp=0x00007f293226fa30, pc=0x00007f2922006453)
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
45 - frame( sp=0x00007f293226fa40, unextended_sp=0x00007f293226fa48, 
fp=0x00007f293226faa0, pc=0x00007f2922006453)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1074)
46 - frame( sp=0x00007f293226fab0, unextended_sp=0x00007f293226fb10, 
fp=0x00007f293226fb88, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128)
47 - frame( sp=0x00007f293226fb98, unextended_sp=0x00007f293226fbb0, 
fp=0x00007f293226fc10, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:148)
48 - frame( sp=0x00007f293226fc20, unextended_sp=0x00007f293226fc20, 
fp=0x00007f293226fc78, pc=0x00007f2922006453)
org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:66)
49 - frame( sp=0x00007f293226fc88, unextended_sp=0x00007f293226fca0, 
fp=0x00007f293226fce8, pc=0x00007f2922006926)
java_lang_Runnable$run.call
50 - frame( sp=0x00007f293226fcf8, unextended_sp=0x00007f293226fcf8, 
fp=0x00007f293226fd50, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
51 - frame( sp=0x00007f293226fd60, unextended_sp=0x00007f293226fd60, 
fp=0x00007f293226fdb8, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
52 - frame( sp=0x00007f293226fdc8, unextended_sp=0x00007f293226fdc8, 
fp=0x00007f293226fe20, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
53 - frame( sp=0x00007f293226fe30, unextended_sp=0x00007f293226fe30, 
fp=0x00007f293226fe80, pc=0x00007f2922006b01)
org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:463)
54 - frame( sp=0x00007f293226fe90, unextended_sp=0x00007f293226ff50, 
fp=0x00007f293226ffa0, pc=0x00007f29220063f4)
org.codehaus.groovy.tools.shell.Groovysh.run(Groovysh.groovy:402)
C frame (sp=0x00007f293226ffb0 unextended sp=0x00007f293226ffd0, 
fp=0x00007f2932270040, pc=0x00007f2922000681)
(~Stub::call_stub)
      BufferBlob (0x00007f29220003d0) used for StubRoutines (1)

55 - frame( sp=0x00007f2932270870, unextended_sp=0x00007f2932270870, 
fp=0x00007f29322708c8, pc=0x00007f2922023c0c)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
56 - frame( sp=0x00007f29322708d8, unextended_sp=0x00007f29322708e8, 
fp=0x00007f2932270940, pc=0x00007f2922006453)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
57 - frame( sp=0x00007f2932270950, unextended_sp=0x00007f2932270958, 
fp=0x00007f29322709b0, pc=0x00007f2922006453)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
58 - frame( sp=0x00007f29322709c0, unextended_sp=0x00007f29322709c0, 
fp=0x00007f2932270a18, pc=0x00007f2922006b01)
java.lang.reflect.Method.invoke(Method.java:474)
59 - frame( sp=0x00007f2932270a28, unextended_sp=0x00007f2932270a30, 
fp=0x00007f2932270a88, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:231)
60 - frame( sp=0x00007f2932270a98, unextended_sp=0x00007f2932270aa8, 
fp=0x00007f2932270b00, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
61 - frame( sp=0x00007f2932270b10, unextended_sp=0x00007f2932270b18, 
fp=0x00007f2932270b70, pc=0x00007f2922006b01)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
62 - frame( sp=0x00007f2932270b80, unextended_sp=0x00007f2932270b80, 
fp=0x00007f2932270bd8, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
63 - frame( sp=0x00007f2932270be8, unextended_sp=0x00007f2932270be8, 
fp=0x00007f2932270c40, pc=0x00007f2922006453)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
64 - frame( sp=0x00007f2932270c50, unextended_sp=0x00007f2932270c50, 
fp=0x00007f2932270ca8, pc=0x00007f2922006b01)
org.codehaus.groovy.tools.shell.Main.main(Main.groovy:131)
C frame (sp=0x00007f2932270cb8 unextended sp=0x00007f2932270d38, 
fp=0x00007f2932270da0, pc=0x00007f2922000681)
(~Stub::call_stub)
      BufferBlob (0x00007f29220003d0) used for StubRoutines (1)

65 - frame( sp=0x00007f29322715d0, unextended_sp=0x00007f29322715d0, 
fp=0x00007f2932271630, pc=0x00007f2922023c0c)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
66 - frame( sp=0x00007f2932271640, unextended_sp=0x00007f2932271650, 
fp=0x00007f29322716a8, pc=0x00007f2922006453)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
67 - frame( sp=0x00007f29322716b8, unextended_sp=0x00007f29322716c0, 
fp=0x00007f2932271718, pc=0x00007f2922006453)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
68 - frame( sp=0x00007f2932271728, unextended_sp=0x00007f2932271728, 
fp=0x00007f2932271780, pc=0x00007f2922006b01)
java.lang.reflect.Method.invoke(Method.java:474)
69 - frame( sp=0x00007f2932271790, unextended_sp=0x00007f2932271798, 
fp=0x00007f29322717f0, pc=0x00007f2922006453)
org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:106)
70 - frame( sp=0x00007f2932271800, unextended_sp=0x00007f2932271858, 
fp=0x00007f29322718a0, pc=0x00007f2922006278)
org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:128)

What happened was: the ps() function prints its output on tty, in this 
case that's the stdout of the debuggee process. So instead of seeing the 
output directly in gdb, we're seeing it on the Groovy shell side.

On 10/30/2012 02:58 AM, Sagar M D wrote:
> Hi All,
>
> How to get the back trace of complete stack which includes java compiled
> and interpreter frame using GDB on Linux . How to make GDB to understand
> java compiled and interpreter frame?
>
> Thanks,
> Sagar



More information about the hotspot-dev mailing list