使用clion调试开发比特币源码

以mac平台为例,这个做法我相信都是通用的,我用的是clion 2019.1.2. 版本不同,可能功能会略有不同.

编译安装

  1. 准备
    xcode-select --install
  2. 依赖
    brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode
  3. 钱包依赖的DB
    如果需要钱包功能,则需要Berkeley DB 4.8. 下载安装脚本.
    在源码根目录运行:
    ./contrib/install_db4.sh .
  4. 编译

 git clone https://github.com/bitcoin/bitcoin
 cd bitcoin
 ./autogen.sh
./configure
make
make check
make deploy

比如我在mac上就碰到找不到boost目录的情况,则需要在./configure指定,我的./configure参数:

./configure --enable-debug --without-gui --with-boost=/usr/local/Cellar/boost/1.68.0_1
  1. 运行
    这时候就会在bitcoin/src目录下看到可执行程序bitcoind,bitcoin-cli等.


配置clion

创建CMakefile.txt

在src目录创建CMakefile.txt,内容如下

cmake_minimum_required(VERSION 3.12)
project(src)

set(CMAKE_CXX_STANDARD 11)

include_directories(${PROJECT_SOURCE_DIR}/secp256k1/include
        ${PROJECT_SOURCE_DIR}/leveldb/include
        ${PROJECT_SOURCE_DIR}/univalue/include
        ${PROJECT_SOURCE_DIR}
        )


file(GLOB_RECURSE SRCS *.cpp *,h)

创建项目

File->New CMake Project From Source->选择刚刚的CMakefile.txt

等待系统建立索引.这时候你就发现代码跳转,代码提示已经ok了.
如果直接运行是编译不通过的.

支持调试运行

  1. Run->Edit Configurations->添加Custom Build Application
    起名字叫bitcoin-cli
  2. Configure Custom Build Targets
    仍然起名字叫bitcoin-cli

    • 添加build
      Name: bitcoin-cli
      Program: make
      Arguments: bitcoin-cli

  3. clean 选择和build一样的配置

  4. 继续配置Custom Build Application
    Target: 选择bitcoin-cli
    Executable: 找到文件系统中的可执行程序bitcoin-cli文件


    可以根据自己的需要添加运行参数.

  5. 调试
    在bitcoin-cli.cpp main函数入口处设置断点.
    如果有语法错误提示,忽略即可,

点击调试->bitcoin-cli 发现停在了main函数,并且能够显示变量.
只不过对于复杂的变量,不能显示.

示意图

这个支持调试的思路就是让clion支持非cmake build的可执行程序,在2. Configure Custom Build Targets中使用make bitcoin-cli,实际上就是在src目录执行这个命令.
这样就会在调试之前生成可执行程序.

这里举的例子是bitcoin-cli,如果有调试其他程序需求,如法炮制即可.