对于一个新手来说,ta的Aha时刻来自于ta终于可以运行自己的第一行代码,我还记得我当年写的可以运行的“烂代码”的兴奋时刻。而当我利用自己的编程技能找到工作时,其中的一个Aha时刻来自于我学会了如何调试程序。调试程序占用工作的时间有时候会达到50%,面对着一堆代码逻辑就是不知道问题在哪里。而当我掌握了如何利用断点查看当前的变量和状态后,我的工作效率提升了一倍,bug变少了,幸福感提升了。
调试Solidity
有一个很好的工具:Remix
,通过这个链接可以进入到Remix的网站:http://remix.ethereum.org 。
代码编辑
之后我们可以把Solidity
代码放到编辑器中,上图中可以看到最左侧的行数旁边有警告/错误提示,把鼠标放到上面会有具体的信息提示,根据提示修改代码就可以消除错误信息了。修改后的示例代码可以在这里获取:https://gist.github.com/luckyyang/8edc58ad647f35424823448ea4404f8d 。
合约编译
之后我们可以选择对应的编译器版本,示例代码中的版本是0.4.25
,然后就可以编译了,看到绿色的提示表明编译成功。编译的主要工作是生成ABI
和bytecode
,本文不做阐述。
合约部署
编译成功后,就可以切换到Run
标签进行合约的部署了,这里我们可以选择Environment
为JavaScript VM
,直接在浏览器中运行一个虚拟的区块链网络,这样就不用我们使用Mist
和ganache-cli
这类的工具再去运行区块链网络了。
如上图所示,选择JavaScript VM
后,会自动帮我们生成5个Account
,每个Account
中有100个Ether
,足够我们开发使用了。
如上图所示,点击Deploy
按钮后就可以部署合约了,部署成功后会自动显示合约的信息。点击合约会显示所有的变量和方法。
合约交互
如上图所示,红色表示此类方法会修改合约的状态,也表明了需要消耗gas
;青色表示此类方法的作用是获取信息,不会修改合约的状态。点击具体的方法名字就可以和合约进行交互了。
合约调试
如上图所示,同时与合约交互的transaction
也会显示到代码区下面的区域。点击Debug
按钮会跳转到Debugger
界面(下图),不但可以进行单步调试,还可以看到合约中更具体的信息,如变量和合约状态等。
总结
利用Remix
可以很方便的对Solidity
进行编辑,部署和调试,各位Solidity
开发者赶快用起来吧。
原文始发于微信公众号(Rebase社区):智能合约 | 如何调试Solidity