add indexChanged event

pull/7/head
yann300 9 years ago
parent e5594b7c56
commit d63a3e1047
  1. 30
      src/calldataPanel.js
  2. 30
      src/callstackPanel.js
  3. 2
      src/codeManager.js
  4. 20
      src/debugger.js
  5. 30
      src/memoryPanel.js
  6. 30
      src/stackPanel.js
  7. 15
      src/stepManager.js
  8. 82
      src/sticker.js
  9. 30
      src/storagePanel.js
  10. 13
      src/vmDebugger.js

@ -4,7 +4,9 @@ var BasicPanel = require('./basicPanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object traceManager: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -25,19 +27,21 @@ module.exports = React.createClass({
) )
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
if (window.ethDebuggerSelectedItem !== nextProps.currentStepIndex) return
var self = this var self = this
this.context.traceManager.getCallDataAt(nextProps.currentStepIndex, function (error, calldata) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error) if (window.ethDebuggerSelectedItem !== index) return
} else if (window.ethDebuggerSelectedItem === nextProps.currentStepIndex) {
self.setState({ self.context.traceManager.getCallDataAt(index, function (error, calldata) {
data: self.format(calldata) if (error) {
}) console.log(error)
} } else if (window.ethDebuggerSelectedItem === index) {
self.setState({
data: self.format(calldata)
})
}
})
}) })
}, },

@ -4,7 +4,9 @@ var BasicPanel = require('./basicPanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object traceManager: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -25,19 +27,21 @@ module.exports = React.createClass({
) )
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
if (window.ethDebuggerSelectedItem !== nextProps.currentStepIndex) return
var self = this var self = this
this.context.traceManager.getCallStackAt(nextProps.currentStepIndex, function (error, callstack) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error) if (window.ethDebuggerSelectedItem !== index) return
} else if (window.ethDebuggerSelectedItem === nextProps.currentStepIndex) {
self.setState({ self.context.traceManager.getCallStackAt(index, function (error, callstack) {
data: self.format(callstack) if (error) {
}) console.log(error)
} } else if (window.ethDebuggerSelectedItem === index) {
self.setState({
data: self.format(callstack)
})
}
})
}) })
}, },

@ -53,6 +53,7 @@ CodeManager.prototype.ensureCodeLoaded = function (address, currentStep, tx) {
self.getInstructionIndex(address, currentStep, function (error, result) { self.getInstructionIndex(address, currentStep, function (error, result) {
if (!error) { if (!error) {
self.trigger('codeChanged', [codes.code, address, result]) self.trigger('codeChanged', [codes.code, address, result])
self.trigger('indexChanged', [result])
self.currentAddress = address self.currentAddress = address
} else { } else {
console.log(error) console.log(error)
@ -67,6 +68,7 @@ CodeManager.prototype.ensureCodeLoaded = function (address, currentStep, tx) {
self.getInstructionIndex(address, currentStep, function (error, result) { self.getInstructionIndex(address, currentStep, function (error, result) {
if (!error) { if (!error) {
self.trigger('codeChanged', [code, address, result]) self.trigger('codeChanged', [code, address, result])
self.trigger('indexChanged', [result])
self.currentAddress = address self.currentAddress = address
} else { } else {
console.log(error) console.log(error)

@ -4,6 +4,8 @@ var TxBrowser = require('./txBrowser')
var StepManager = require('./stepManager') var StepManager = require('./stepManager')
var VmDebugger = require('./vmDebugger') var VmDebugger = require('./vmDebugger')
var style = require('./basicStyles') var style = require('./basicStyles')
var util = require('./util')
var eventManager = require('./eventManager')
module.exports = React.createClass({ module.exports = React.createClass({
getInitialState: function () { getInitialState: function () {
@ -17,6 +19,7 @@ module.exports = React.createClass({
web3: React.PropTypes.object, web3: React.PropTypes.object,
traceManager: React.PropTypes.object, traceManager: React.PropTypes.object,
codeManager: React.PropTypes.object, codeManager: React.PropTypes.object,
root: React.PropTypes.object,
tx: React.PropTypes.object tx: React.PropTypes.object
}, },
@ -25,6 +28,7 @@ module.exports = React.createClass({
web3: this.props.context.web3, web3: this.props.context.web3,
traceManager: this.props.context.traceManager, traceManager: this.props.context.traceManager,
codeManager: this.props.context.codeManager, codeManager: this.props.context.codeManager,
root: this,
tx: this.state.tx tx: this.state.tx
} }
}, },
@ -41,12 +45,17 @@ module.exports = React.createClass({
}, },
stepChanged: function (stepIndex) { stepChanged: function (stepIndex) {
this.trigger('indexChanged', [stepIndex])
this.setState({ this.setState({
currentStepIndex: stepIndex currentStepIndex: stepIndex
}) })
this.props.context.codeManager.resolveStep(stepIndex, this.state.tx) this.props.context.codeManager.resolveStep(stepIndex, this.state.tx)
}, },
componentWillMount: function () {
util.extend(this, eventManager)
},
startDebugging: function (blockNumber, txIndex, tx) { startDebugging: function (blockNumber, txIndex, tx) {
if (this.props.context.traceManager.isLoading) { if (this.props.context.traceManager.isLoading) {
return return
@ -58,11 +67,12 @@ module.exports = React.createClass({
var self = this var self = this
this.props.context.traceManager.resolveTrace(tx, function (success) { this.props.context.traceManager.resolveTrace(tx, function (success) {
console.log('trace loaded ' + success) console.log('trace loaded ' + success)
self.setState({ if (success) {
currentStepIndex: 0 self.stepChanged(0)
}) self.refs.stepManager.newTraceAvailable()
self.refs.stepManager.newTraceAvailable() } else {
self.props.context.codeManager.resolveStep(0, tx) console.log('trace not loaded')
}
}) })
} }
}) })

@ -5,7 +5,9 @@ var BasicPanel = require('./basicPanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object, traceManager: React.PropTypes.object,
web3: React.PropTypes.object web3: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -26,19 +28,21 @@ module.exports = React.createClass({
) )
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
if (window.ethDebuggerSelectedItem !== nextProps.currentStepIndex) return
var self = this var self = this
this.context.traceManager.getMemoryAt(nextProps.currentStepIndex, function (error, memory) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error) if (window.ethDebuggerSelectedItem !== index) return
} else if (window.ethDebuggerSelectedItem === nextProps.currentStepIndex) {
self.setState({ self.context.traceManager.getMemoryAt(index, function (error, memory) {
data: self.formatMemory(memory, 16) if (error) {
}) console.log(error)
} } else if (window.ethDebuggerSelectedItem === index) {
self.setState({
data: self.formatMemory(memory, 16)
})
}
})
}) })
}, },

@ -4,7 +4,9 @@ var BasicPanel = require('./basicPanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object traceManager: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -25,19 +27,21 @@ module.exports = React.createClass({
) )
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
if (window.ethDebuggerSelectedItem !== nextProps.currentStepIndex) return
var self = this var self = this
this.context.traceManager.getStackAt(nextProps.currentStepIndex, function (error, stack) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error) if (window.ethDebuggerSelectedItem !== index) return
} else if (window.ethDebuggerSelectedItem === nextProps.currentStepIndex) {
self.setState({ self.context.traceManager.getStackAt(index, function (error, stack) {
data: self.format(stack) if (error) {
}) console.log(error)
} } else if (window.ethDebuggerSelectedItem === index) {
self.setState({
data: self.format(stack)
})
}
})
}) })
}, },

@ -3,6 +3,8 @@ var React = require('react')
var ButtonNavigator = require('./buttonNavigator') var ButtonNavigator = require('./buttonNavigator')
var Slider = require('./slider') var Slider = require('./slider')
var style = require('./basicStyles') var style = require('./basicStyles')
var util = require('./util')
var eventManager = require('./eventManager')
module.exports = React.createClass({ module.exports = React.createClass({
propTypes: { propTypes: {
@ -41,6 +43,7 @@ module.exports = React.createClass({
}, },
componentDidMount: function () { componentDidMount: function () {
// util.extend(this, eventManager)
this.changeState(-1) this.changeState(-1)
}, },
@ -70,8 +73,8 @@ module.exports = React.createClass({
if (!this.context.traceManager.inRange(step)) { if (!this.context.traceManager.inRange(step)) {
return return
} }
this.props.onStepChanged(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
stepIntoForward: function () { stepIntoForward: function () {
@ -82,9 +85,9 @@ module.exports = React.createClass({
if (!this.context.traceManager.inRange(step)) { if (!this.context.traceManager.inRange(step)) {
return return
} }
this.props.onStepChanged(step)
this.refs.slider.setValue(step) this.refs.slider.setValue(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
stepIntoBack: function () { stepIntoBack: function () {
@ -95,9 +98,9 @@ module.exports = React.createClass({
if (!this.context.traceManager.inRange(step)) { if (!this.context.traceManager.inRange(step)) {
return return
} }
this.props.onStepChanged(step)
this.refs.slider.setValue(step) this.refs.slider.setValue(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
stepOverForward: function () { stepOverForward: function () {
@ -105,9 +108,9 @@ module.exports = React.createClass({
return return
} }
var step = this.context.traceManager.findStepOverForward(this.state.currentStepIndex) var step = this.context.traceManager.findStepOverForward(this.state.currentStepIndex)
this.props.onStepChanged(step)
this.refs.slider.setValue(step) this.refs.slider.setValue(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
stepOverBack: function () { stepOverBack: function () {
@ -115,9 +118,9 @@ module.exports = React.createClass({
return return
} }
var step = this.context.traceManager.findStepOverBack(this.state.currentStepIndex) var step = this.context.traceManager.findStepOverBack(this.state.currentStepIndex)
this.props.onStepChanged(step)
this.refs.slider.setValue(step) this.refs.slider.setValue(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
jumpToNextCall: function () { jumpToNextCall: function () {
@ -125,9 +128,9 @@ module.exports = React.createClass({
return return
} }
var step = this.context.traceManager.findNextCall(this.state.currentStepIndex) var step = this.context.traceManager.findNextCall(this.state.currentStepIndex)
this.props.onStepChanged(step)
this.refs.slider.setValue(step) this.refs.slider.setValue(step)
this.changeState(step) this.changeState(step)
this.props.onStepChanged(step)
}, },
changeState: function (step) { changeState: function (step) {

@ -3,7 +3,9 @@ var React = require('react')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object traceManager: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -80,48 +82,50 @@ module.exports = React.createClass({
return null return null
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
var self = this var self = this
this.context.traceManager.getCurrentStep(nextProps.currentStepIndex, function (error, step) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error)
} else {
self.setState({
step: step
})
}
})
this.context.traceManager.getMemExpand(nextProps.currentStepIndex, function (error, addmem) { self.context.traceManager.getCurrentStep(index, function (error, step) {
if (error) { if (error) {
console.log(error) console.log(error)
} else { } else {
self.setState({ self.setState({
addmemory: addmem step: step
}) })
} }
}) })
this.context.traceManager.getStepCost(nextProps.currentStepIndex, function (error, gas) { self.context.traceManager.getMemExpand(index, function (error, addmem) {
if (error) { if (error) {
console.log(error) console.log(error)
} else { } else {
self.setState({ self.setState({
gas: gas addmemory: addmem
}) })
} }
}) })
this.context.traceManager.getRemainingGas(nextProps.currentStepIndex, function (error, remaingas) { self.context.traceManager.getStepCost(index, function (error, gas) {
if (error) { if (error) {
console.log(error) console.log(error)
} else { } else {
self.setState({ self.setState({
remainingGas: remaingas gas: gas
}) })
} }
})
self.context.traceManager.getRemainingGas(index, function (error, remaingas) {
if (error) {
console.log(error)
} else {
self.setState({
remainingGas: remaingas
})
}
})
}) })
} }
}) })

@ -5,7 +5,9 @@ var BasicPanel = require('./basicPanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: { contextTypes: {
traceManager: React.PropTypes.object, traceManager: React.PropTypes.object,
tx: React.PropTypes.object tx: React.PropTypes.object,
codeManager: React.PropTypes.object,
root: React.PropTypes.object
}, },
getDefaultProps: function () { getDefaultProps: function () {
@ -26,19 +28,21 @@ module.exports = React.createClass({
) )
}, },
componentWillReceiveProps: function (nextProps) { componentDidMount: function () {
if (nextProps.currentStepIndex < 0) return
if (window.ethDebuggerSelectedItem !== nextProps.currentStepIndex) return
var self = this var self = this
this.context.traceManager.getStorageAt(nextProps.currentStepIndex, this.context.tx, function (error, storage) { this.context.root.register('indexChanged', this, function (index) {
if (error) { if (index < 0) return
console.log(error) if (window.ethDebuggerSelectedItem !== index) return
} else if (window.ethDebuggerSelectedItem === nextProps.currentStepIndex) {
self.setState({ self.context.traceManager.getStorageAt(index, self.context.tx, function (error, storage) {
data: self.formatStorage(storage) if (error) {
}) console.log(error)
} } else if (window.ethDebuggerSelectedItem === index) {
self.setState({
data: self.formatStorage(storage)
})
}
})
}) })
}, },

@ -10,16 +10,6 @@ var StackPanel = require('./stackPanel')
var StoragePanel = require('./storagePanel') var StoragePanel = require('./storagePanel')
module.exports = React.createClass({ module.exports = React.createClass({
contextTypes: {
traceManager: React.PropTypes.object
},
getInitialState: function () {
return {
currentAddress: null
}
},
getDefaultProps: function () { getDefaultProps: function () {
return { return {
currentStepIndex: -1 // index of the selected item in the vmtrace currentStepIndex: -1 // index of the selected item in the vmtrace
@ -29,9 +19,6 @@ module.exports = React.createClass({
render: function () { render: function () {
return ( return (
<div style={this.props.vmTrace === null ? style.hidden : style.display}> <div style={this.props.vmTrace === null ? style.hidden : style.display}>
<div style={style.container}>
<span style={style.address}>Current code: {this.state.currentAddress}</span>
</div>
<div style={style.container}> <div style={style.container}>
<table> <table>
<tbody> <tbody>

Loading…
Cancel
Save