sol-dbg 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debug/decoding/general.d.ts.map +1 -1
- package/dist/debug/decoding/general.js +3 -2
- package/dist/debug/decoding/general.js.map +1 -1
- package/dist/debug/index.d.ts +1 -1
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/debug/index.js +1 -1
- package/dist/debug/index.js.map +1 -1
- package/dist/debug/tracers/base_tracer.d.ts +30 -0
- package/dist/debug/tracers/base_tracer.d.ts.map +1 -0
- package/dist/debug/tracers/base_tracer.js +108 -0
- package/dist/debug/tracers/base_tracer.js.map +1 -0
- package/dist/debug/tracers/index.d.ts +4 -0
- package/dist/debug/tracers/index.d.ts.map +1 -0
- package/dist/debug/tracers/index.js +20 -0
- package/dist/debug/tracers/index.js.map +1 -0
- package/dist/debug/tracers/sol_debugger.d.ts +9 -0
- package/dist/debug/tracers/sol_debugger.d.ts.map +1 -0
- package/dist/debug/tracers/sol_debugger.js +22 -0
- package/dist/debug/tracers/sol_debugger.js.map +1 -0
- package/dist/debug/tracers/transformers/basic_info.d.ts +23 -0
- package/dist/debug/tracers/transformers/basic_info.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/basic_info.js +52 -0
- package/dist/debug/tracers/transformers/basic_info.js.map +1 -0
- package/dist/debug/tracers/transformers/events.d.ts +12 -0
- package/dist/debug/tracers/transformers/events.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/events.js +30 -0
- package/dist/debug/tracers/transformers/events.js.map +1 -0
- package/dist/debug/tracers/transformers/ext_stack.d.ts +17 -0
- package/dist/debug/tracers/transformers/ext_stack.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/ext_stack.js +200 -0
- package/dist/debug/tracers/transformers/ext_stack.js.map +1 -0
- package/dist/debug/tracers/transformers/index.d.ts +10 -0
- package/dist/debug/tracers/transformers/index.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/index.js +23 -0
- package/dist/debug/tracers/transformers/index.js.map +1 -0
- package/dist/debug/tracers/transformers/int_stack.d.ts +13 -0
- package/dist/debug/tracers/transformers/int_stack.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/int_stack.js +139 -0
- package/dist/debug/tracers/transformers/int_stack.js.map +1 -0
- package/dist/debug/tracers/transformers/op.d.ts +11 -0
- package/dist/debug/tracers/transformers/op.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/op.js +11 -0
- package/dist/debug/tracers/transformers/op.js.map +1 -0
- package/dist/debug/tracers/transformers/source.d.ts +26 -0
- package/dist/debug/tracers/transformers/source.d.ts.map +1 -0
- package/dist/debug/tracers/transformers/source.js +38 -0
- package/dist/debug/tracers/transformers/source.js.map +1 -0
- package/dist/debug/types.d.ts +3 -6
- package/dist/debug/types.d.ts.map +1 -1
- package/dist/debug/types.js +8 -0
- package/dist/debug/types.js.map +1 -1
- package/dist/utils/pp.d.ts +3 -2
- package/dist/utils/pp.d.ts.map +1 -1
- package/dist/utils/pp.js +21 -9
- package/dist/utils/pp.js.map +1 -1
- package/package.json +1 -1
- package/dist/debug/sol_debugger.d.ts +0 -107
- package/dist/debug/sol_debugger.d.ts.map +0 -1
- package/dist/debug/sol_debugger.js +0 -521
- package/dist/debug/sol_debugger.js.map +0 -1
package/dist/utils/pp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pp.d.ts","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"AAsBA,OAAO,EACH,eAAe,
|
|
1
|
+
{"version":3,"file":"pp.d.ts","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"AAsBA,OAAO,EACH,eAAe,EAGf,aAAa,EACb,KAAK,EAEL,aAAa,EAEb,SAAS,EACZ,MAAM,UAAU,CAAC;AA4FlB,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAQxD;AAED,wBAAgB,YAAY,CACxB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,MAAM,GAClB,MAAM,CA6HR;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CA8CpB;AAED,wBAAgB,cAAc,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,MAAM,GAChB,IAAI,CAyBN;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CA8B9C"}
|
package/dist/utils/pp.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flattenStack = flattenStack;
|
|
3
4
|
exports.ppStackTrace = ppStackTrace;
|
|
4
5
|
exports.printStepSourceString = printStepSourceString;
|
|
5
6
|
exports.debugDumpTrace = debugDumpTrace;
|
|
@@ -7,6 +8,7 @@ exports.ppStep = ppStep;
|
|
|
7
8
|
const utils_1 = require("ethereum-cryptography/utils");
|
|
8
9
|
const solc_typed_ast_1 = require("solc-typed-ast");
|
|
9
10
|
const debug_1 = require("../debug");
|
|
11
|
+
const transformers_1 = require("../debug/tracers/transformers");
|
|
10
12
|
const srcLocation = require("src-location");
|
|
11
13
|
const fse = require("fs-extra");
|
|
12
14
|
function ppValue(typ, v, infer) {
|
|
@@ -70,15 +72,24 @@ function ppValue(typ, v, infer) {
|
|
|
70
72
|
}
|
|
71
73
|
throw new Error(`NYI ppValue of type ${typ.pp()}`);
|
|
72
74
|
}
|
|
73
|
-
function
|
|
75
|
+
function flattenStack(s) {
|
|
74
76
|
const res = [];
|
|
77
|
+
for (let i = 0; i < s.length; i++) {
|
|
78
|
+
res.push(s[i]);
|
|
79
|
+
res.push(...s[i].internalFrames);
|
|
80
|
+
}
|
|
81
|
+
return res;
|
|
82
|
+
}
|
|
83
|
+
function ppStackTrace(solDbg, trace, extStack, curOffset) {
|
|
84
|
+
const res = [];
|
|
85
|
+
const stack = flattenStack(extStack);
|
|
75
86
|
for (let i = 0; i < stack.length; i++) {
|
|
76
87
|
const frame = stack[i];
|
|
77
88
|
let frameStr;
|
|
78
89
|
const lastOffset = i < stack.length - 1 ? trace[stack[i + 1].startStep - 1].pc : curOffset;
|
|
79
|
-
const extFrame =
|
|
80
|
-
const [lastPosInFrame] =
|
|
81
|
-
const info =
|
|
90
|
+
const extFrame = frame.kind === debug_1.FrameKind.InternalCall ? frame.nearestExtFrame : frame;
|
|
91
|
+
const [lastPosInFrame] = (0, transformers_1.decodeSourceLoc)(lastOffset, extFrame);
|
|
92
|
+
const info = extFrame.info;
|
|
82
93
|
let funArgs;
|
|
83
94
|
let funName;
|
|
84
95
|
let fileName;
|
|
@@ -171,7 +182,7 @@ function ppStackTrace(solDbg, trace, stack, curOffset) {
|
|
|
171
182
|
return res.reverse().join("\n");
|
|
172
183
|
}
|
|
173
184
|
function printStepSourceString(step, lastExtStep, sources, artifactManager, prefix) {
|
|
174
|
-
const info = step
|
|
185
|
+
const info = (0, transformers_1.getContractInfo)(step);
|
|
175
186
|
if (info === undefined) {
|
|
176
187
|
return undefined;
|
|
177
188
|
}
|
|
@@ -209,18 +220,19 @@ function debugDumpTrace(trace, artifactManager, prefix) {
|
|
|
209
220
|
const jumpType = (step.op.mnemonic === "JUMP" || step.op.mnemonic === "JUMPI") && step.src
|
|
210
221
|
? step.src.jump
|
|
211
222
|
: "";
|
|
212
|
-
const srcString = printStepSourceString(step, (0,
|
|
223
|
+
const srcString = printStepSourceString(step, (0, transformers_1.topExtFrame)(step.stack), sources, artifactManager, prefix);
|
|
213
224
|
console.error(`${i} ${step.pc}: ${step.op.mnemonic} ${jumpType} ${srcString !== undefined ? srcString : ""}`);
|
|
214
225
|
}
|
|
215
226
|
}
|
|
216
227
|
function ppStep(step) {
|
|
217
228
|
const addrStr = `${step.address.toString().slice(36)}`;
|
|
218
229
|
let contractId;
|
|
219
|
-
const extFrame = (0,
|
|
230
|
+
const extFrame = (0, transformers_1.topExtFrame)(step.stack);
|
|
220
231
|
const code = extFrame.code;
|
|
221
232
|
const codeMdHash = extFrame.codeMdHash;
|
|
222
|
-
|
|
223
|
-
|
|
233
|
+
const contractInfo = (0, transformers_1.getContractInfo)(step);
|
|
234
|
+
if (contractInfo) {
|
|
235
|
+
contractId = `${contractInfo.contractName}@${addrStr}`;
|
|
224
236
|
}
|
|
225
237
|
else if (codeMdHash) {
|
|
226
238
|
contractId = `0x${codeMdHash.slice(0, 6)}...${codeMdHash.slice(60)}@${addrStr}`;
|
package/dist/utils/pp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pp.js","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pp.js","sourceRoot":"","sources":["../../src/utils/pp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { Block } from "@ethereumjs/block";
|
|
2
|
-
import { EVMStateManagerInterface } from "@ethereumjs/common";
|
|
3
|
-
import { InterpreterStep } from "@ethereumjs/evm";
|
|
4
|
-
import { TypedTransaction } from "@ethereumjs/tx";
|
|
5
|
-
import { RunTxResult, VM } from "@ethereumjs/vm";
|
|
6
|
-
import { ASTNode } from "solc-typed-ast";
|
|
7
|
-
import { DecodedBytecodeSourceMapEntry } from "..";
|
|
8
|
-
import { ContractInfo, IArtifactManager } from "./artifact_manager";
|
|
9
|
-
import { DbgStack, ExternalFrame, Frame, StepState } from "./types";
|
|
10
|
-
/**
|
|
11
|
-
* Give a stack or a stack frame, find the last **external** stack frame under it (include itself).
|
|
12
|
-
*/
|
|
13
|
-
export declare function lastExternalFrame(arg: Frame | DbgStack): ExternalFrame;
|
|
14
|
-
export declare function getContractInfo(arg: Frame | DbgStack): ContractInfo | undefined;
|
|
15
|
-
export interface SolTxDebuggerOpts {
|
|
16
|
-
strict?: boolean;
|
|
17
|
-
foundryCheatcodes?: boolean;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* `SolTxDebugger` is the main debugger class. It contains a VM and a
|
|
21
|
-
* corresponding Web3 provider that can be used to run transactions on that VM.
|
|
22
|
-
*
|
|
23
|
-
* Once a particular transaction `tx` has been run against the vm, you can call
|
|
24
|
-
* `debugger.loadTx(tx)` to debug that transaction.
|
|
25
|
-
*
|
|
26
|
-
* `loadTx(tx)` walks over every step of the tx and computes the following information for it:
|
|
27
|
-
*
|
|
28
|
-
* 1. What is the currently deployed contract in which we are executing?
|
|
29
|
-
* 2. Did the `ArtifactManager` have debugging info for this contract? (src map? ast?)
|
|
30
|
-
* 3. If we have source map compute the corresponding src tripple for this instruction
|
|
31
|
-
* 4. If we have an ast, see if the src tripple of this instruction matches any node in the AST
|
|
32
|
-
* 5. If this is a LOGN instruction, extract the event payload and topics
|
|
33
|
-
* 6. Maintain a stack trace, containing all external and internal calls for
|
|
34
|
-
* this step. Note that we can compute internal stack frames only for contracts
|
|
35
|
-
* with debug info.
|
|
36
|
-
*
|
|
37
|
-
* All the above information is held for each step in the `DbgState` struct.
|
|
38
|
-
*/
|
|
39
|
-
export declare class SolTxDebugger {
|
|
40
|
-
readonly artifactManager: IArtifactManager;
|
|
41
|
-
private readonly strict;
|
|
42
|
-
private readonly foundryCheatcodes;
|
|
43
|
-
constructor(artifactManager: IArtifactManager, opts?: SolTxDebuggerOpts);
|
|
44
|
-
/**
|
|
45
|
-
* Decode a *CALL* instruction. Computes:
|
|
46
|
-
* 1. The receiver address
|
|
47
|
-
* 2. The code address
|
|
48
|
-
* 3. The msg.data
|
|
49
|
-
* @param step
|
|
50
|
-
*/
|
|
51
|
-
private decodeCall;
|
|
52
|
-
/**
|
|
53
|
-
* Given the VM state of a trace step adjust the stack trace accordingly. This handles the following cases:
|
|
54
|
-
*
|
|
55
|
-
* - op is CREATE or CREATE2 - push a new external frame for the creation context of the contract
|
|
56
|
-
* - op is CALL/CALLCODE/DELEGATECALL/STATICCALL - push a new external frame for the callee context
|
|
57
|
-
* - stack depth decreased and previous instruction was RETURN, REVERT or was in an error state - pop external frames from the stack
|
|
58
|
-
* - internal call - previous op is JUMPDEST and the source map of the current op is the begining of a new function - push a new internal call frame
|
|
59
|
-
* - return from internal call - pop the last frame
|
|
60
|
-
*/
|
|
61
|
-
private adjustStackFrame;
|
|
62
|
-
processRawTraceStep(vm: VM, stateManager: EVMStateManagerInterface, step: InterpreterStep, trace: StepState[], stack: Frame[]): Promise<StepState>;
|
|
63
|
-
private static getEVM;
|
|
64
|
-
/**
|
|
65
|
-
* Releases references to the EVM stored inside VM from the
|
|
66
|
-
* `interpRunListeners` map. This avoids memory leaks when repeatedly
|
|
67
|
-
* calling the debugger on different transactions. Should be called once
|
|
68
|
-
* for every vm created by `SolTxDebugger.createVm` after its done being
|
|
69
|
-
* used.
|
|
70
|
-
*/
|
|
71
|
-
static releaseVM(vm: VM): void;
|
|
72
|
-
static createVm(stateManager: EVMStateManagerInterface | undefined, foundryCheatcodes: boolean): Promise<VM>;
|
|
73
|
-
debugTx(tx: TypedTransaction, block: Block | undefined, stateManager: EVMStateManagerInterface): Promise<[StepState[], RunTxResult]>;
|
|
74
|
-
/**
|
|
75
|
-
* Build a `CreationFrame` from the given `sender` address, `data` `Uint8Array`(msg.data) and the current trace step number.
|
|
76
|
-
*/
|
|
77
|
-
private makeCreationFrame;
|
|
78
|
-
/**
|
|
79
|
-
* Given a contract info and a function selector find the (potentially inherited) entry point (function or public var getter).
|
|
80
|
-
* @param info
|
|
81
|
-
* @param selector
|
|
82
|
-
* @returns
|
|
83
|
-
*/
|
|
84
|
-
private findEntryPoint;
|
|
85
|
-
/**
|
|
86
|
-
* Build a `CallFrame` from the given `sender` address, `receiver` address, `data` `Uint8Array`, (msg.data) and the current trace step number.
|
|
87
|
-
*/
|
|
88
|
-
private makeCallFrame;
|
|
89
|
-
/**
|
|
90
|
-
* Helper function to get the source information for the instruction at a given `instrOffset`,
|
|
91
|
-
* in the context of the external call `ctx`.
|
|
92
|
-
*
|
|
93
|
-
* There are several cases this handles:
|
|
94
|
-
*
|
|
95
|
-
* 1. If there is no debug info for the contract executing in `ctx` return undefined
|
|
96
|
-
* 2. If there is debug info, but no AST return only the decoded bytecode sourcemap entry
|
|
97
|
-
* 3. If there is both debug info and an AST return the decoded source location and any AST nodes that match this location
|
|
98
|
-
*/
|
|
99
|
-
decodeSourceLoc(instrOffset: number, ctx: ExternalFrame): [DecodedBytecodeSourceMapEntry | undefined, ASTNode | undefined];
|
|
100
|
-
/**
|
|
101
|
-
* WIP: TODO document
|
|
102
|
-
* TODO: Rename - this function doesn't do any actual decoding - just building up DataView for the arguments
|
|
103
|
-
* of a function
|
|
104
|
-
*/
|
|
105
|
-
private decodeFunArgs;
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=sol_debugger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sol_debugger.d.ts","sourceRoot":"","sources":["../../src/debug/sol_debugger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAiB,wBAAwB,EAAY,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAO,eAAe,EAAmB,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAA6D,MAAM,gBAAgB,CAAC;AACpG,OAAO,EACH,6BAA6B,EAQhC,MAAM,IAAI,CAAC;AAIZ,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AASlF,OAAO,EAKH,QAAQ,EAGR,aAAa,EACb,KAAK,EAKL,SAAS,EAGZ,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,GAAG,QAAQ,GAAG,aAAa,CAItE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAI/E;AAiBD,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAQD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,aAAa;IAEtB,SAAgB,eAAe,EAAE,gBAAgB,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAEhC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAgBvE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA0BlB;;;;;;;;OAQG;YACW,gBAAgB;IA8JxB,mBAAmB,CACrB,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,EAAE,EAClB,KAAK,EAAE,KAAK,EAAE,GACf,OAAO,CAAC,SAAS,CAAC;mBAgFA,MAAM;IA8B3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;WAUjB,QAAQ,CACjB,YAAY,EAAE,wBAAwB,GAAG,SAAS,EAClD,iBAAiB,EAAE,OAAO,GAC3B,OAAO,CAAC,EAAE,CAAC;IA0BR,OAAO,CACT,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,YAAY,EAAE,wBAAwB,GACvC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;IA2DtC;;OAEG;YACW,iBAAiB;IA2B/B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;YACW,aAAa;IAwD3B;;;;;;;;;OASG;IACH,eAAe,CACX,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,aAAa,GACnB,CAAC,6BAA6B,GAAG,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAiBnE;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAoDxB"}
|