Fixes and improved debugger

pull/94/head
obscuren 11 years ago
parent 1eda1d25b0
commit 8fab7ce37d
  1. 28
      ethereal/assets/debugger/debugger.qml
  2. 2
      ethereal/assets/samplecoin/samplecoin.html
  3. 46
      ethereal/ui/debugger.go
  4. 2
      ethereal/ui/gui.go

@ -126,7 +126,7 @@ ApplicationWindow {
SplitView {
orientation: Qt.Horizontal
height: 250
height: 150
TableView {
id: stackTableView
@ -152,20 +152,36 @@ ApplicationWindow {
}
}
SplitView {
height: 300
Rectangle {
height: 100
width: parent.width
TableView {
id: storageTableView
property var memModel: ListModel {
id: storageModel
}
height: parent.height
width: parent.width - stackTableView.width
width: parent.width
TableViewColumn{ id: key ; role: "key" ; title: "#" ; width: storageTableView.width / 2}
TableViewColumn{ role: "value" ; title: "value" ; width: storageTableView.width / 2}
model: storageModel
}
}
Rectangle {
height: 200
width: parent.width
TableView {
id: logTableView
property var logModel: ListModel {
id: logModel
}
height: parent.height
width: parent.width
TableViewColumn{ id: message ; role: "message" ; title: "log" ; width: logTableView.width }
model: logModel
}
}
}
}
}
@ -237,4 +253,8 @@ ApplicationWindow {
function setStorage(storage) {
storageModel.append({key: storage.key, value: storage.value})
}
function setLog(msg) {
logModel.append({message: msg})
}
}

@ -9,7 +9,7 @@
<script type="text/javascript">
var jefcoinAddr = "518546ffa883dcc838a64bc2dabada0fd64af459"
var jefcoinAddr = "de0bd4ea1947deabf1749d7ed633f289358c9f6c"
var mAddr = ""
function createTransaction() {

@ -5,27 +5,9 @@ import (
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil"
"github.com/go-qml/qml"
"math/big"
"strings"
)
func formatData(data string) []byte {
if len(data) == 0 {
return nil
}
// Simple stupid
d := new(big.Int)
if data[0:1] == "\"" && data[len(data)-1:] == "\"" {
d.SetBytes([]byte(data[1 : len(data)-1]))
} else if data[:2] == "0x" {
d.SetBytes(ethutil.FromHex(data[2:]))
} else {
d.SetString(data, 0)
}
return ethutil.BigToBytes(d, 256)
}
type DebuggerWindow struct {
win *qml.Window
engine *qml.Engine
@ -77,17 +59,10 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
self.Db.Q <- true
}
defer func() {
if r := recover(); r != nil {
fmt.Println(r)
self.Db.done = true
}
}()
data := ethutil.StringToByteFunc(dataStr, func(s string) (ret []byte) {
slice := strings.Split(dataStr, "\n")
for _, dataItem := range slice {
d := formatData(dataItem)
d := ethutil.FormatData(dataItem)
ret = append(ret, d...)
}
return
@ -100,7 +75,7 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
})
if err != nil {
ethutil.Config.Log.Debugln(err)
self.Logln(err)
return
}
@ -130,11 +105,17 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
Coinbase: block.Coinbase,
Time: block.Time,
Diff: block.Difficulty,
Value: ethutil.Big(valueStr),
})
self.Db.done = false
go func() {
callerClosure.Call(vm, data, self.Db.halting)
ret, _, err := callerClosure.Call(vm, data, self.Db.halting)
if err != nil {
self.Logln("exited with errors:", err)
} else {
self.Logf("exited: %v", ret)
}
state.Reset()
@ -142,6 +123,15 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
}()
}
func (self *DebuggerWindow) Logf(format string, v ...interface{}) {
self.win.Root().Call("setLog", fmt.Sprintf(format, v...))
}
func (self *DebuggerWindow) Logln(v ...interface{}) {
str := fmt.Sprintln(v...)
self.Logf("%s", str[:len(str)-1])
}
func (self *DebuggerWindow) Next() {
self.Db.Next()
}

@ -269,5 +269,5 @@ func (gui *Gui) Transact(recipient, value, gas, gasPrice, data string) (*ethpub.
func (gui *Gui) Create(recipient, value, gas, gasPrice, data string) (*ethpub.PReceipt, error) {
keyPair := ethutil.GetKeyRing().Get(0)
return gui.pub.Create(ethutil.Hex(keyPair.PrivateKey), value, gas, gasPrice, data)
return gui.pub.Transact(ethutil.Hex(keyPair.PrivateKey), recipient, value, gas, gasPrice, data)
}

Loading…
Cancel
Save