From 3e0dbe0eaa723580a86a6a2f18ab744387d4235e Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 19 Jul 2017 14:32:45 +0200 Subject: [PATCH] core/vm: remove logging and add section labels to struct logs (#14782) --- core/vm/contracts.go | 3 --- core/vm/interpreter.go | 11 ----------- core/vm/logger.go | 25 ++++++++++++++++--------- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 90b2f913e..43b60ba77 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -23,7 +23,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "golang.org/x/crypto/ripemd160" ) @@ -76,14 +75,12 @@ func (c *ecrecover) Run(in []byte) ([]byte, error) { // tighter sig s values in homestead only apply to tx sigs if !allZero(in[32:63]) || !crypto.ValidateSignatureValues(v, r, s, false) { - log.Trace("ECRECOVER error: v, r or s value invalid") return nil, nil } // v needs to be at the end for libsecp256k1 pubKey, err := crypto.Ecrecover(in[:32], append(in[64:128], v)) // make sure the public key is a valid one if err != nil { - log.Trace("ECRECOVER failed", "err", err) return nil, nil } diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 545f7d650..0a225bca4 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -19,12 +19,10 @@ package vm import ( "fmt" "sync/atomic" - "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" ) @@ -122,19 +120,12 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret ) contract.Input = input - // User defer pattern to check for an error and, based on the error being nil or not, use all gas and return. defer func() { if err != nil && in.cfg.Debug { - // XXX For debugging - //fmt.Printf("%04d: %8v cost = %-8d stack = %-8d ERR = %v\n", pc, op, cost, stack.len(), err) in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err) } }() - log.Debug("interpreter running contract", "hash", codehash[:]) - tstart := time.Now() - defer log.Debug("interpreter finished running contract", "hash", codehash[:], "elapsed", time.Since(tstart)) - // The Interpreter main run loop (contextual). This loop runs until either an // explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during // the execution of one of the operations or until the done flag is set by the @@ -190,8 +181,6 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret if in.cfg.Debug { in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err) } - // XXX For debugging - //fmt.Printf("%04d: %8v cost = %-8d stack = %-8d\n", pc, op, cost, stack.len()) // execute the operation res, err := operation.execute(&pc, in.evm, contract, mem, stack) diff --git a/core/vm/logger.go b/core/vm/logger.go index 17a9c9ec3..b73b13bd9 100644 --- a/core/vm/logger.go +++ b/core/vm/logger.go @@ -196,20 +196,27 @@ func (l *StructLogger) StructLogs() []StructLog { // WriteTrace writes a formatted trace to the given writer func WriteTrace(writer io.Writer, logs []StructLog) { for _, log := range logs { - fmt.Fprintf(writer, "%-10spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost) + fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost) if log.Err != nil { fmt.Fprintf(writer, " ERROR: %v", log.Err) } - fmt.Fprintf(writer, "\n") + fmt.Fprintln(writer) - for i := len(log.Stack) - 1; i >= 0; i-- { - fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32)) + if len(log.Stack) > 0 { + fmt.Fprintln(writer, "Stack:") + for i := len(log.Stack) - 1; i >= 0; i-- { + fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32)) + } } - - fmt.Fprint(writer, hex.Dump(log.Memory)) - - for h, item := range log.Storage { - fmt.Fprintf(writer, "%x: %x\n", h, item) + if len(log.Memory) > 0 { + fmt.Fprintln(writer, "Memory:") + fmt.Fprint(writer, hex.Dump(log.Memory)) + } + if len(log.Storage) > 0 { + fmt.Fprintln(writer, "Storage:") + for h, item := range log.Storage { + fmt.Fprintf(writer, "%x: %x\n", h, item) + } } fmt.Fprintln(writer) }