GDB调试EOS(CentOS7.4)

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
			;;
			*)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值