Linux下debug是件挺麻烦的事,好在有这个工具,操作类似OllyDbg,做些基础的debug还是挺好用的。
1.准备工作,安装好需要用到的工具
以下为需要的工具列表(请注意版本,版本选得不好的话,可能后面会备受折磨,此处省略若干字......)
boost => 1_75_0
gcc => 5.3
cmake => 3.12.1
capstone => 4.0.1
graphviz => 2.40.1
Qt => 5.6.3
2. 设置下环境变量 (可以写入文件如edb.setup.5.3.csh,安装edb前,source edb.setup.5.3.csh)
setenv EDB_ROOT /PATH/edb/RHEL6
setenv BOOSTDIR $EDB_ROOT/boost_1_75_0
setenv CPLUS_INCLUDE_PATH $BOOSTDIR/include/boost
setenv Boost_INCLUDE_DIR $BOOSTDIR/include/boost
setenv CMAKE_HOME $EDB_ROOT/cmake-3.12.1-Linux-x86_64
set path = ($CMAKE_HOME/bin $path)
setenv QMAKE_HOME $EDB_ROOT/Qt5.6.3/5.6.3
set path = ($QMAKE_HOME/gcc_64/bin $path)
################################################################
# settings below will make find capstone and libgvc
################################################################
setenv PKG_CONFIG_PATH $EDB_ROOT/capstone-4.0.1/lib/pkgconfig:/graphviz-2.40.1/lib/pkgconfig
setenv GCC_HOME $EDB_ROOT/gcc-5.3.0-linux_x86_64
set path = ($GCC_HOME/bin $path)
setenv LD_LIBRARY_PATH $EDB_ROOT/capstone-4.0.1/lib64:$GCC_HOME/lib64:$GCC_HOME/lib:$BOOSTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
setenv CAPSTONE_INCLUDE_DIRS $EDB_ROOT/capstone-4.0.1/include
setenv CAPSTONE_LIBRARY_DIRS $EDB_ROOT/capstone-4.0.1/lib64
setenv GRAPHVIZ_INCLUDE_DIRS $EDB_ROOT/graphviz-2.40.1/include
setenv GRAPHVIZ_LIBRARY_DIRS $EDB_ROOT/graphviz-2.40.1/lib
3. 安装edb
(a) 到下面网站下载最新版edb源文件 edb-debugger-1.3.0.tgz
https://github.com/eteran/edb-debugger
(b) 解压 tar zxvf edb-debugger-1.3.0.tgz
(c) cd edb-debugger/include
ln -s $EDB_ROOT/boost_1_75_0/include/boost .
ln -s $EDB_ROOT/capstone-4.0.1/include/capstone .
ln -s $EDB_ROOT/graphviz-2.40.1/include/graphviz .
(d) cd edb-debugger/include, 因为编译时报下面的错,编辑文件Value.h注释掉第82行 /* p += sprintf(p, "%016" PRIx64, *it); */
include/Value.h:82:27: error: expected ')' before 'PRIx64'
p += sprintf(p, "%016" PRIx64, *it);
(e) cmake -DBOOST_ROOT:PATH=$EDB_ROOT/boost_1_75_0
make
好了,大功告成。