aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ethchain/vm.go16
1 files changed, 13 insertions, 3 deletions
diff --git a/ethchain/vm.go b/ethchain/vm.go
index cd7516db7..909b375ae 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -53,7 +53,10 @@ type Vm struct {
err error
- Hook DebugHook
+ // Debugging
+ Hook DebugHook
+ BreakPoints []int64
+ Stepping bool
}
type DebugHook func(step int, op OpCode, mem *Memory, stack *Stack, stateObject *StateObject) bool
@@ -742,9 +745,16 @@ func (vm *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
vm.Endl()
if vm.Hook != nil {
- if !vm.Hook(prevStep, op, mem, stack, closure.Object()) {
- return nil, nil
+ for _, instrNo := range vm.BreakPoints {
+ if pc.Cmp(big.NewInt(instrNo)) == 0 || vm.Stepping {
+ vm.Stepping = true
+
+ if !vm.Hook(prevStep, op, mem, stack, closure.Object()) {
+ return nil, nil
+ }
+ }
}
}
+
}
}