diff --git a/ethereal/assets/debugger/debugger.qml b/ethereal/assets/debugger/debugger.qml
index 31e0eb781690968a57b29ff245968c06649bb6e1..6f53697c9099e47a4afdd57dd7f93bcff725fd89 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 9d60c7587531665eb98c6296b2f43bc72a53944e..f49741e09b6f4ddde3996e2ad5080a7253cf5a04 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 1037ba5acd4e5603ea3f0263178e745348a75ec1..7b59e2fbc69cfbfcab4008280c1b8f358e056eca 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() {