前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-03-08 在ubuntu上调试go-ethereum(2)

2019-03-08 在ubuntu上调试go-ethereum(2)

作者头像
oracle3
发布2022-05-13 08:30:49
3060
发布2022-05-13 08:30:49
举报
文章被收录于专栏:oracle3技术大杂烩

2019-02-26 在ubuntu上调试go-ethereum中,goland无法在ubuntu下调试,但是dlv调试又太复杂,因此参考以太坊 (go-ethereum) 编译调试环境的搭建,搞定了vscode在ubuntu上的调试

1、安装go插件

参考golang+VScode安装与配置

需要安装:

代码语言:javascript
复制
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-outline
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
go get -u -v golang.org/x/tools/cmd/guru
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv

2、配置vscode

文件launch.json内容如下:

代码语言:javascript
复制
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/bin/geth",
            "args": ["--datadir",
                "/home/elikong/go/src/github.com/ethereum/go-ethereum/build/bin/geth-data0",
                "--networkid",
                "1314",
                "--nodiscover",
                "--rpcport",
                "6001",
                "--port",
                "30001",
                "--ipcpath",
                "geth1.ipc",
                "console"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

主要是在自动生成的文件上修改了program和args参数

3、调试

使用ctrl+p打开文件ethapi\api.go,找到函数func (s *PublicTransactionPoolAPI) SendTransaction

在函数第一行设置断点

参考2018-11-22 Debug以太坊go-ethereum实战调试转账

代码语言:javascript
复制
./geth attach ./geth-data0/geth1.ipc

miner.start()
personal.unlockAccount(eth.accounts[0])
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(10,"ether")})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、安装go插件
  • 2、配置vscode
  • 3、调试
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档