aboutsummaryrefslogtreecommitdiffstats
path: root/ethereal
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-06-26 16:37:48 +0800
committerobscuren <geffobscura@gmail.com>2014-06-26 16:37:48 +0800
commitb3367ec0e3e69694481cccd9335a63d2c559a543 (patch)
tree06ea78faf1e73d8a43958e5ac5db0fa75fa7a61b /ethereal
parent1268413ba7f7a3bc0c60fbe47e582864b2de8ccd (diff)
downloaddexon-b3367ec0e3e69694481cccd9335a63d2c559a543.tar.gz
dexon-b3367ec0e3e69694481cccd9335a63d2c559a543.tar.zst
dexon-b3367ec0e3e69694481cccd9335a63d2c559a543.zip
Added option to not break eachline
Diffstat (limited to 'ethereal')
-rw-r--r--ethereal/assets/debugger/debugger.qml6
-rw-r--r--ethereal/ui/debugger.go26
-rw-r--r--ethereal/ui/gui.go4
3 files changed, 21 insertions, 15 deletions
diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml
index 31e0eb781..6f53697c9 100644
--- a/ethereal/assets/debugger/debugger.qml
+++ b/ethereal/assets/debugger/debugger.qml
@@ -208,6 +208,12 @@ ApplicationWindow {
}
text: "Next"
}
+ CheckBox {
+ id: breakEachLine
+ objectName: "breakEachLine"
+ text: "Break each instruction"
+ checked: true
+ }
}
}
diff --git a/ethereal/ui/debugger.go b/ethereal/ui/debugger.go
index 9d60c7587..f49741e09 100644
--- a/ethereal/ui/debugger.go
+++ b/ethereal/ui/debugger.go
@@ -26,7 +26,7 @@ func NewDebuggerWindow(lib *UiLib) *DebuggerWindow {
}
win := component.CreateWindow(nil)
- db := &Debugger{win, make(chan bool), make(chan bool), true, false}
+ db := &Debugger{win, make(chan bool), make(chan bool), true, false, true}
return &DebuggerWindow{engine: engine, win: win, lib: lib, Db: db}
}
@@ -59,6 +59,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
if !self.Db.done {
self.Db.Q <- true
}
+ self.Db.breakOnInstr = self.win.Root().ObjectByName("breakEachLine").Bool("checked")
defer func() {
if r := recover(); r != nil {
@@ -164,6 +165,7 @@ type Debugger struct {
N chan bool
Q chan bool
done, interrupt bool
+ breakOnInstr bool
}
type storeVal struct {
@@ -190,16 +192,18 @@ func (d *Debugger) halting(pc int, op ethchain.OpCode, mem *ethchain.Memory, sta
d.win.Root().Call("setStorage", storeVal{fmt.Sprintf("% x", key), fmt.Sprintf("% x", node.Str())})
})
-out:
- for {
- select {
- case <-d.N:
- break out
- case <-d.Q:
- d.interrupt = true
- d.clearBuffers()
-
- return false
+ if d.breakOnInstr {
+ out:
+ for {
+ select {
+ case <-d.N:
+ break out
+ case <-d.Q:
+ d.interrupt = true
+ d.clearBuffers()
+
+ return false
+ }
}
}
diff --git a/ethereal/ui/gui.go b/ethereal/ui/gui.go
index 1037ba5ac..7b59e2fbc 100644
--- a/ethereal/ui/gui.go
+++ b/ethereal/ui/gui.go
@@ -154,10 +154,6 @@ func (gui *Gui) createWindow(comp qml.Object) *qml.Window {
gui.win = win
gui.uiLib.win = win
- db := &Debugger{gui.win, make(chan bool), make(chan bool), true, false}
- gui.lib.Db = db
- gui.uiLib.Db = db
-
return gui.win
}
func (gui *Gui) setInitialBlockChain() {