1.我的环境是docker启动的是centos镜像,自带gdb7.8
2.我在gdb调试的时候发现不能直接打印stl容器,报错 Scripting in the "Python" language is not supported in this copy of GDB
3.原因看了好多,最大可能是因为docker启动的这个镜像自带的gdb7.8不支持python,安装python-devel还是这个报错,虽然不确定原因,但不影响解决问题
4.解决方法:
1)首先确认是在docker下,先使用docker进入启动容器的root模式,docker exec -ti -u root containerid /bin/bash(containerid就是docker启动的容器的id)
2)查看是否安装了python-devel,使用命令 rpm -qa | grep python-devel查看,没有安装的话 yum install python-devel
3)因为自带的gdb7.8不支持python 所以可以重新下载,我下载的是gdb7.6.1
内网可以直接下载好压缩包,传送门:http://mirrors.nju.edu.cn/gnu/gdb/
然后 tar xvf gdb-7.6.1.tar.gz && cd gdb-7.6.1 && ./configure --with-python && make && make install
然后gdb -v查看是否安装好了
外网就更简单了,直接yum install gdb 好像默认就下载的是gdb7.6
4)问题解决了,接下来就是配置
编辑~/.gdbinit文件,加入下面代码(/home/ro_dev/python-stl是gdb启动时寻找python解释的路径,我是拷贝的/usr/share/gcc-4.8.5/python这个目录,重命名成了python-stl,当然你也可以不重命名,把下面代码对应目录名改成python就行)
python这个目录也可以去下载最新的 svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
python
import sys
sys.path.insert(0, '/home/ro_dev/python-stl')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
以上,解决了docker启动的容器gdb不能查看stl容器问题。
在Docker的CentOS镜像中,由于gdb7.8不支持Python,导致无法直接打印STL容器。解决方法包括:更新gdb到7.6.1并配置支持Python的路径,通过编辑.gdbinit文件导入libstdcxx.v6.printers以注册STL容器打印功能。
1206

被折叠的 条评论
为什么被折叠?



