mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-22 17:39:19 +00:00
Fixed exception details not being displayed
Make sure the exception scoperef is allocated before locals are retrieved.
This commit is contained in:
@@ -800,11 +800,11 @@ class AndroidDebugSession extends DebugSession {
|
|||||||
var last_exception = thread.paused.last_exception;
|
var last_exception = thread.paused.last_exception;
|
||||||
if (last_exception && !last_exception.objvar) {
|
if (last_exception && !last_exception.objvar) {
|
||||||
// retrieve the exception object
|
// retrieve the exception object
|
||||||
this.dbgr.getExceptionLocal(last_exception.exception, {response,scopes,last_exception,thread,args})
|
|
||||||
.then((ex_local,x) => {
|
|
||||||
var {response,scopes,last_exception,thread,args} = x;
|
|
||||||
last_exception.objvar = ex_local;
|
|
||||||
thread.allocateExceptionScopeReference(args.frameId);
|
thread.allocateExceptionScopeReference(args.frameId);
|
||||||
|
this.dbgr.getExceptionLocal(last_exception.exception, {response,scopes,last_exception})
|
||||||
|
.then((ex_local,x) => {
|
||||||
|
var {response,scopes,last_exception} = x;
|
||||||
|
last_exception.objvar = ex_local;
|
||||||
// put the exception first - otherwise it can get lost if there's a lot of locals
|
// put the exception first - otherwise it can get lost if there's a lot of locals
|
||||||
scopes.unshift(new Scope("Exception: "+ex_local.type.typename, last_exception.scopeRef, false));
|
scopes.unshift(new Scope("Exception: "+ex_local.type.typename, last_exception.scopeRef, false));
|
||||||
this.sendResponse(response);
|
this.sendResponse(response);
|
||||||
@@ -956,6 +956,7 @@ class AndroidDebugSession extends DebugSession {
|
|||||||
var last_exception = {
|
var last_exception = {
|
||||||
exception: e.event.exception,
|
exception: e.event.exception,
|
||||||
threadid: e.throwlocation.threadid,
|
threadid: e.throwlocation.threadid,
|
||||||
|
frameId: null, // allocated during scopesRequest
|
||||||
scopeRef: null, // allocated during scopesRequest
|
scopeRef: null, // allocated during scopesRequest
|
||||||
};
|
};
|
||||||
this.reportStoppedEvent("exception", e.throwlocation, last_exception);
|
this.reportStoppedEvent("exception", e.throwlocation, last_exception);
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ class AndroidThread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
allocateExceptionScopeReference(frameId) {
|
allocateExceptionScopeReference(frameId) {
|
||||||
|
if (!this.paused) return;
|
||||||
|
if (!this.paused.last_exception) return;
|
||||||
this.paused.last_exception.frameId = frameId;
|
this.paused.last_exception.frameId = frameId;
|
||||||
this.paused.last_exception.scopeRef = frameId + 1;
|
this.paused.last_exception.scopeRef = frameId + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user