本文所有实践都是基于EOS dawn-v4.1.0,请切到该分支然后实践
切换命令:git checkout dawn-v4.1.0
在【EOS源码编译运行】一文已经详细描述了EOS源码编译。但是阅读代码,光跑代码是不够的,必须要可以调试。一搜发现网上没有相关的文章,只好自己探索折腾。不过很快发现其实EOS已经为我们做好了的,只需带相关参数即可,只是官网没有介绍,自然网上也没有相关的文章。
编译带调试信息的EOS
编译可以调试(带源码信息)的EOS程序,增加-o Debug参数即可,即
$./eosio_build.sh -o Debug
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU3Ni9lM2M3N2U4ZDFhYjE3YWY4MDA5ODY4MmZmODA0MjcxMC5wbmc%3D.png?w=700&webp=1)
下载源码等其他步骤请参考【EOS源码编译运行】一文
下载VSCode
和比特币,以太坊源码调试一样,vscode是最佳的调试EOS源码的调试工具
调试配置流程
导入源码
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcwNy9iMzNkZGI3OTViNzJlMjg3YmJiYzFiYzIyODE5ZWYwYi5wbmc%3D.png?w=700&webp=1)
配置调试文件
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcxOS81Y2Q3N2QwNTM5YzZlNTk2YjYzNGFlMThiODQwYWY4Zi5wbmc%3D.png?w=700&webp=1)
执行后,会生成launch.json, 然后修改program字段值为对应的程序即可,比如要调试nodeos, 则修改为如下
添加断点并开始调试
在行号左边点击即可添加断点
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM4MS83NzU3MWQ2NWJkNzM3YzE2M2FlMTdmMDVjNDhmZjAzZC5wbmc%3D.png?w=700&webp=1)
点击调试界面的右三角开始调试程序
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYyNS8wMWIxM2UyN2ZkNzY0ZjZhODYzMTdhOGUzNGNiNzZlMS5wbmc%3D.png?w=700&webp=1)
![[EOS源码分析]4.EOS源码调试 [EOS源码分析]4.EOS源码调试](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk5Mi80ZDdiMjExOWFiMzhiODA4NDhmMzlmZjMzZGM2OTg5OC5wbmc%3D.png?w=700&webp=1)
注意
如果你曾经执行过release版本的nodeos,需要将数据清空,否则会报错
database created by a different compiler, build, boost version, or operating system
执行如下命令清空老数据
$ rm -rf ~/Library/Application\ Support/eosio