如何使用Truffle在VSCode中调试solidity合约

简介

Truffle是以太坊最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。

本文以fibonacci作为实例进行调试

参考文档

https://trufflesuite.com/docs/truffle/how-to/debug-test/use-the-truffle-debugger/

https://trufflesuite.com/guides/debugger-variable-inspection/

插件安装

vscode插件安装

extension中搜索Truffle for VS Code并安装

nodejs/npm安装

最新版本下载:https://nodejs.org/en/download/

nodejs,npm的版本限制可安装该pkg:https://nodejs.org/download/release/v16.20.2/node-v16.20.2.pkg,

 

完整卸载之前的nodejs/npm

sudo npm uninstall npm -g

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

sudo rm -rf /usr/local/include/node /Users/$USER/.npm

sudo rm /usr/local/bin/node

sudo rm /usr/local/share/man/man1/node.1

sudo rm /usr/local/lib/dtrace/node.d

 

清空缓存

npm update

npm cache clean --force

 

truffle/ganache安装

安装最新版本的nodejs/npm,然后自动点击页面安装即可

 

详细流程

新建一个web3的空项目

然后选择目录创建,创建之后的目录结构是这样:

新建合约代码

在contracts目录新建一个Fibonacci.sol的合约:

pragma solidity ^0.4.22;
contract Fibonacci {

uint[] fibseries;

  // n = how many in the series to return
  function generateFib(uint n) public {

    // set 1st and 2nd entries
    fibseries.push(1);
    fibseries.push(1);

    // generate subsequent entries
    for (uint i=2; i < n ; i++) {
      fibseries.push(fibseries[i-1] + fibseries[i-2]);
    }

  }

}

新建部署代码

在migrations目录新建一个2_deploy_contracts.js的部署代码:

module.exports = function (deployer) {
  deployer.deploy(Fibonacci);
};

修改根项目里的truffle-config.js文件

在truffle-config.js中打开默认的development网络,这个是连接到ganache的服务器

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*",
    },
  },
};

这个地址是ganache的服务器地址

 

开始ganache服务器

编译合约:

右键某个.sol合约,选择Build Contracts:

Output中会显示编译结果:

部署合约:

右键某个.sol合约,选择Deploy Contracts:

在弹出框选择对应的网络:

Output中会看到部署结果和合约信息:

手动用js调用合约的generateFib函数:

Terminal中输入:truffle consule

然后输入js代码:

Fibonacci.deployed().then(function (instance) {
 return instance.generateFib(10);
});

代码意义是获取Fibonacci的部署合约,然后调用generateFib的合约方法,传入参数是10

这样执行以后,生成了一个新的交易:

Ganache也可以看到交易:

调试刚才的generateFib交易:

打开command Palette, 或者command + shift + p打开也行

选择Truffle:Debug Transaction

选择网络:

选择交易:

这里2个交易:

        1个是创建合约的时候调用构造函数,

        1个就是刚才我手动调用js的generateFib()方法

那我们就调试generateFib()那个交易

然后就进入调试页面,可正常调试了:

 

posted @ 2024-02-04 10:49  若-飞  阅读(344)  评论(0编辑  收藏  举报