docker容器内gdb查看stl容器

在Docker的CentOS镜像中,由于gdb7.8不支持Python,导致无法直接打印STL容器。解决方法包括:更新gdb到7.6.1并配置支持Python的路径,通过编辑.gdbinit文件导入libstdcxx.v6.printers以注册STL容器打印功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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容器问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值