< prev index next >
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java
Print this page
*** 148,163 ****
@Override
public CFrame sender(ThreadProxy thread) {
ThreadContext context = thread.getContext();
! Address nextPC = getNextPC(dwarf != null);
if (nextPC == null) {
return null;
}
- DwarfParser nextDwarf = getNextDwarf(nextPC);
Address nextCFA = getNextCFA(nextDwarf, context);
return isValidFrame(nextCFA, context) ? new LinuxAMD64CFrame(dbg, nextCFA, nextPC, nextDwarf)
: null;
}
--- 148,173 ----
@Override
public CFrame sender(ThreadProxy thread) {
ThreadContext context = thread.getContext();
! Address nextPC;
! DwarfParser nextDwarf;
! try {
! nextPC = getNextPC(dwarf != null);
if (nextPC == null) {
return null;
}
+ nextDwarf = getNextDwarf(nextPC);
+ } catch (DebuggerException e) { // Bail out to Java frame case
+ nextDwarf = null;
+ nextPC = getNextPC(false);
+ if (nextPC == null) {
+ return null;
+ }
+ }
Address nextCFA = getNextCFA(nextDwarf, context);
return isValidFrame(nextCFA, context) ? new LinuxAMD64CFrame(dbg, nextCFA, nextPC, nextDwarf)
: null;
}
< prev index next >