前言
在阿里云服务器中想调试工程, 发现没有gdb, 记录下遇到的坑
预备下载
yum -y install python3
yum -y install python3-devel // 需要里面的头文件Python.h
因为gdb显示STL容器的数据就很麻烦, 如下图
gnu额外添加了python脚本让STL容器数据更好的展示
python的版本没有关系, 如果是python2的话,就要下载对应的python2-devel
python的环境配置
vim ~/.bashrc
// 在.bashrc中添加头文件, 下载完python3-devel后就会有的
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/include/python3.6m
export CPLUS_INCLUDE_PATH=#CPLUS_INCLUDE_PATH:/usr/include/python3.6m
wq
source ~/.bashrc
下载gdb
镜像库
http://ftp.gnu.org/gnu/gdb/
wget http://ftp.gnu.org/gnu/gdb/gdb-8.3.tar.gz
解压文件
tar xzf gdb-8.3.tar.gz
配置
./configure --prefix=/usr/local/gdb-8.3.0 --with-python=/usr/bin/python3.6
–with-python 是你下载python地方
编译
make -j4
安装
make install
配置环境
vim ~/.bashrc
export PATH=/usr/local/gdb-8.3.0/bin:$PATH
source ~/.bashrc
配置gdb pretty-printing
https://sourceware.org/gdb/wiki/STLSupport
-
选择一个目录用svn下载python文件
cd /opt/python/gdb_prints
svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc+±v3/python没有svn的话
yum -y install svn
-
增加~/.gdbinit, gdb运行时默认会调用这个文件
vi ~/.gdbinit
这里写的python,因为我软连接ln -s /usr/bin/python3.6 /usr/bin/python
python
import sys
sys.path.insert(0, ‘cd /opt/python/gdb_prints/python’)
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
endwq
vscode 中如何使用pretty-printing
需要这段话, 这样的鼠标悬空的变量和左侧的调试变量都会开启pretty-printing
遇到的问题
-
在make install的使用缺少makeinfo命令
网上的解决方案yum install -y texinfo
我的服务器始终找不到的这个软件包, 更新了yum也没用, 难受
下载配置texinfo
镜像库
https://mirrors.aliyun.com/gnu/texinfo/
http://ftp.gnu.org/gnu/texinfowget http://ftp.gnu.org/gnu/gdb/texinfo-6.8.tar.gz
配置安装
./configure --prefix=/usr/local/texinfo-6.8.0
编译安装
make -j4
make install配置环境
vim ~/.bashrc
export PATH=/usr/local/texinfo-6.8.0/bin:/usr/local/gdb-8.3.0/bin:$PATH
source ~/.bashrc -
如何配置–with-python
见步骤