diff options
author | obscuren <geffobscura@gmail.com> | 2015-06-11 01:56:40 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-06-11 01:56:40 +0800 |
commit | 10af69b57c8022bb400e1f00bb3c6413e640a7e1 (patch) | |
tree | ef7960eaf9031f76b468f279a08a71a58a9bd72b /core/vm/logger.go | |
parent | fc2a061d510fbe09534ee1ade167d66c40ba7bf1 (diff) | |
download | go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar.gz go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar.bz2 go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar.lz go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar.xz go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.tar.zst go-tangerine-10af69b57c8022bb400e1f00bb3c6413e640a7e1.zip |
core, core/vm: moved logger and added gas cost to struct logging
Diffstat (limited to 'core/vm/logger.go')
-rw-r--r-- | core/vm/logger.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/core/vm/logger.go b/core/vm/logger.go new file mode 100644 index 000000000..6d08cbebe --- /dev/null +++ b/core/vm/logger.go @@ -0,0 +1,45 @@ +package vm + +import ( + "fmt" + "os" + "unicode/utf8" + + "github.com/ethereum/go-ethereum/common" +) + +func StdErrFormat(logs []StructLog) { + fmt.Fprintf(os.Stderr, "VM Stats %d ops\n", len(logs)) + for _, log := range logs { + fmt.Fprintf(os.Stderr, "PC %08d: %s GAS: %v COST: %v\n", log.Pc, log.Op, log.Gas, log.GasCost) + fmt.Fprintln(os.Stderr, "STACK =", len(log.Stack)) + for i, item := range log.Stack { + fmt.Fprintf(os.Stderr, "%04d: %x\n", i, common.LeftPadBytes(item.Bytes(), 32)) + } + + const maxMem = 10 + addr := 0 + fmt.Fprintln(os.Stderr, "MEM =", len(log.Memory)) + for i := 0; i+16 <= len(log.Memory) && addr < maxMem; i += 16 { + data := log.Memory[i : i+16] + str := fmt.Sprintf("%04d: % x ", addr*16, data) + for _, r := range data { + if r == 0 { + str += "." + } else if utf8.ValidRune(rune(r)) { + str += fmt.Sprintf("%s", string(r)) + } else { + str += "?" + } + } + addr++ + fmt.Fprintln(os.Stderr, str) + } + + fmt.Fprintln(os.Stderr, "STORAGE =", len(log.Storage)) + for h, item := range log.Storage { + fmt.Fprintf(os.Stderr, "%x: %x\n", h, common.LeftPadBytes(item, 32)) + } + fmt.Fprintln(os.Stderr) + } +} |