1 编译添加Debug选项
sh eosio_build.sh Debug
2 安装最新GDB
通过yum安装的GDB版本为7.6.1,使用时出现
<http://www.gnu.org/software/gdb/bugs/>…
Reading symbols from /opt/code/eos/build/programs/nodeos/nodeos…Segmentation fault
到GDB官网下载最新的GDB:
http://www.gnu.org/software/gdb/download/
解压后配置:
./configure --enable-tui=yes
编译时出错
configure: error: no enhanced curses library found; disable TUI
安装ncurses库
Centos
yum install ncurses-devel
UBuntu
sudo apt-get install libncurses5-dev
3 调试
先运行节点
nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin
然后查看pid,再attach上去
gdb -tui -p <pid>
4 查看二进制文件使用的编译器
在不同系统使用的编译器可能不一样,如在centos下使用的是gcc,在ubuntu下使用clang,不能使用gdb调试。查看二进制文件使用的编译器
[root@localhost ~]# objdump -s --section=.comment /opt/code/eos/build/programs/nodeos/nodeos
/opt/code/eos/build/programs/nodeos/nodeos: file format elf64-x86-64
Contents of section .comment:
0000 4743433a 2028474e 55292034 2e382e35 GCC: (GNU) 4.8.5
0010 20323031 35303632 33202852 65642048 20150623 (Red H
0020 61742034 2e382e35 2d323829 00474343 at 4.8.5-28).GCC
0030 3a202847 4e552920 372e332e 31203230 : (GNU) 7.3.1 20
0040 31383033 30332028 52656420 48617420 180303 (Red Hat
0050 372e332e 312d3529 00 7.3.1-5).
5 替换clang
在其他系统可能会使用clang编译,不能使用gdb调试。可以根据实际情况修改eosio_build.sh文件,替换clang为gcc和g++,或使用lldb代替gdb调试
case "$OS_NAME" in
"Amazon Linux AMI")
FILE="${PWD}/scripts/eosio_build_amazon.sh"
CXX_COMPILER=g++
C_COMPILER=gcc
MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf
export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm
export CMAKE=${HOME}/opt/cmake/bin/cmake
export PATH=${HOME}/opt/mongodb/bin:$PATH
;;
"CentOS Linux")
FILE="${PWD}/scripts/eosio_build_centos.sh"
CXX_COMPILER=g++
C_COMPILER=gcc
MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf
export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm
export CMAKE=${HOME}/opt/cmake/bin/cmake
export PATH=${HOME}/opt/mongodb/bin:$PATH
;;
"elementary OS")
FILE="${PWD}/scripts/eosio_build_ubuntu.sh"
CXX_COMPILER=clang++-4.0
C_COMPILER=clang-4.0
MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf
export PATH=${HOME}/opt/mongodb/bin:$PATH
;;
"Fedora")
FILE="${PWD}/scripts/eosio_build_fedora.sh"
CXX_COMPILER=g++
C_COMPILER=gcc
MONGOD_CONF=/etc/mongod.conf
export LLVM_DIR=${HOME}/opt/wasm/lib/cmake/llvm
;;
"Linux Mint")
FILE="${PWD}/scripts/eosio_build_ubuntu.sh"
CXX_COMPILER=clang++-4.0
C_COMPILER=clang-4.0
MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf
export PATH=${HOME}/opt/mongodb/bin:$PATH
;;
"Ubuntu")
FILE="${PWD}/scripts/eosio_build_ubuntu.sh"
CXX_COMPILER=clang++-4.0
C_COMPILER=clang-4.0
MONGOD_CONF=${HOME}/opt/mongodb/mongod.conf
export PATH=${HOME}/opt/mongodb/bin:$PATH
;;
*)