diff --git a/apps/debugger/src/app/debugger-api.ts b/apps/debugger/src/app/debugger-api.ts index e9654dd343..0f99518e78 100644 --- a/apps/debugger/src/app/debugger-api.ts +++ b/apps/debugger/src/app/debugger-api.ts @@ -74,7 +74,10 @@ export const DebuggerApiMixin = (Base) => class extends Base { const targetAddress = target || receipt.contractAddress || receipt.to const codeAtAddress = await this._web3.eth.getCode(targetAddress) const output = await this.call('fetchAndCompile', 'resolve', targetAddress, codeAtAddress, 'browser/.debug') - return new CompilerAbstract(output.languageversion, output.data, output.source) + if (output) { + return new CompilerAbstract(output.languageversion, output.data, output.source) + } + return null } async getDebugWeb3 () { diff --git a/libs/remix-debug/src/debugger/VmDebugger.ts b/libs/remix-debug/src/debugger/VmDebugger.ts index 621e3d3bb1..2a90d0ed2c 100644 --- a/libs/remix-debug/src/debugger/VmDebugger.ts +++ b/libs/remix-debug/src/debugger/VmDebugger.ts @@ -189,7 +189,7 @@ export class VmDebuggerLogic { }) }) - this.debugger.event.register('indexChanged', this, (index) => { + this.debugger.event.register('indexChanged', this, async (index) => { if (index < 0) return if (this.stepManager.currentStepIndex !== index) return if (!this.storageResolver) return @@ -201,11 +201,13 @@ export class VmDebuggerLogic { for (var k in this.addresses) { var address = this.addresses[k] var storageViewer = new StorageViewer({ stepIndex: this.stepManager.currentStepIndex, tx: this.tx, address: address }, this.storageResolver, this._traceManager) - storageViewer.storageRange().then((result) => { - storageJSON[address] = result - this.event.trigger('traceStorageUpdate', [storageJSON]) - }) + try { + storageJSON[address] = await storageViewer.storageRange() + } catch (e) { + console.error(e) + } } + this.event.trigger('traceStorageUpdate', [storageJSON]) }) } diff --git a/libs/remix-debug/src/trace/traceHelper.ts b/libs/remix-debug/src/trace/traceHelper.ts index 7de74cd999..2c82f8c0c1 100644 --- a/libs/remix-debug/src/trace/traceHelper.ts +++ b/libs/remix-debug/src/trace/traceHelper.ts @@ -15,11 +15,11 @@ export function resolveCalledAddress (vmTraceIndex, trace) { } export function isCallInstruction (step) { - return ['CALL', 'STATICCALL', 'CALLCODE', 'CREATE', 'DELEGATECALL'].includes(step.op) + return ['CALL', 'STATICCALL', 'CALLCODE', 'CREATE', 'DELEGATECALL', 'CREATE2'].includes(step.op) } export function isCreateInstruction (step) { - return step.op === 'CREATE' + return step.op === 'CREATE' || step.op === 'CREATE2' } export function isReturnInstruction (step) { @@ -47,7 +47,7 @@ export function isSHA3Instruction (step) { } export function newContextStorage (step) { - return step.op === 'CREATE' || step.op === 'CALL' + return step.op === 'CREATE' || step.op === 'CALL' || step.op === 'CREATE2' } export function isCallToPrecompiledContract (index, trace) {