centos升级gdb支持pretty-printer

  • pretty-printer说明
  • 升级GDB
  • 配置.gdbinit
  • 常见错误:
  • vscode调试开启pretty-printer
  • 结束语
  • 参考博客

起因:公司centos自带的gdb-7.6.1不具备pretty-printer功能,故升级到gdb-8.1同时支持pretty-printer方便调试c++代码,下面是踩坑过程。

pretty-printer说明

pretty-printer可以让gdb调试的时候,以python的风格显示STL,极大的方便调试,举个例子,代码包含vector和string时,gdb没有开启pretty-printer进行调试,此时变量窗口显示的是内存地址

开启pretty-printer进行调试,容器就像数组一样,里面内容一清二楚,string也直接显示内容。


遗憾的是,pretty-printer功能需要在编译GDB时手动开启,好了,开始操作。

升级GDB

卸载自带GDB

sudo yum remove -y gdb

确保安装了texinfo

sudo yum install -y texinfo

下载GDB-8.1源码,高版本可能有问题。

wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gdb/gdb-8.1.tar.gz --no-check-certificate

解压,编译安装GDB-8.1

cd gdb-8.1
./configure --with-python=yes
make -j16
sudo make install

如果编译的时候报python is missing or unusable错误,或者想自己指定python版本,需要显示指定python路径

./configure --with-python='/usr/bin/python2.7'

配置.gdbinit

首先查看gdb是否正确安装,输入gdb -config,有–with-python说明安装成功

创建.gdbinit文件,每次启动gdb都会自动运行这个文件

touch ~/.gdbinit

输入下面内容

set print pretty on
set print object on
set print static-members on
set print demangle on
set print sevenbit-strings offpython
import sys
sys.path.insert(0, '/usr/share/gcc-4.8.2/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

最后一步,查看是否配置成功,启动gdb,开启enable pretty-printer,如下图,显示xxx of xxx printers enabled,只要xxx不等于1,就说明升级成功!

常见错误:

  1. 输入enable pretty-printer后显示1 of 1 printers enabled,说明pretty-printer开启失败,很可能是没有配置gdbinit导致
  2. 切记提前安装texinfo
  3. .gdbinit 中的 sys.path.insert(0, ‘/usr/share/gcc-4.8.2/python’) 这一句,路径改成自己的,一般是’/usr/share/gcc-4.8/python’,切记不要写成/usr/bin/python,这两个不一样

vscode调试开启pretty-printer

输入ctrl+shift+p,输入debug,选择

自动生成launch.json,补上下面内容(如果已经存在就可以了)

            "setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],

结束语

其实非常简单,步骤也不多,但是每个博客踩的坑也不一样,也许有的人不需要这么完整的步骤就能成功,下面列了参考文章。

参考博客

  1. Centos7 [安装/升级] GDB
  2. centos 编译gdb发生错误 missing: line 81: makeinfo: command not found
  3. gdb配置打印STL容器脚本pretty printer
  4. GDB的Pretty Printer功能
  5. 01_gdb容器可视化概论
  6. 02_gdb_pretty_printer加载原理

centos升级gdb支持pretty-printer相关推荐

  1. centos 升级glibcc++

    c++调用lua匿名函数 https://blog.csdn.net/zhfk2004/article/details/102716134 centos 升级glibc++ https://zhuan ...

  2. ssh 用密码连接不上、查看openSSH 的版本、CentOS - 升级openSSH,修复安全漏洞

    一  ssh密码连接 1,检查ssh配置文件 #vim /etc/ssh/sshd_config 130 UseDNS no 131 AddressFamily inet 132 PermitRoot ...

  3. Centos 升级linux内核版本

    有两种方法可以升级Centos内核版本.分别是:1. 下载linux内核源码,编译内核源码进行安装.2:下载官方的rpm包进行安装升级.下面分别进行说明. 一.使用下载内核源码进行升级 1.1.从官网 ...

  4. 利用 scl 为 CentOS 升级 gcc 版本

    利用 scl 为 CentOS 升级 gcc 版本 (一)背景 在搞 dpvs 期间遇到的一个问题,在编译 dpdk 程序时会根据所在服务器的 cpu 所拥有的指令集,为了尽可能提高程序效率,将较新的 ...

  5. CentOS 升级内核的三种方式(yum/rpm/源码)

    CentOS 升级内核的三种方式(yum/rpm/源码) 在 CentOS 使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍三种升级内核方式 ...

  6. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练

    计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: • 增加了大量骨干网络的支持,增强 ...

  7. python35是什么意思_python -m是什么意思CentOS 升级 Python3 (附带: 一键升级脚本)...

    一键安装脚本(附带) 电脑技术网从python -m是什么意思CentOS 升级 Python3 (附带: 一键升级脚本)分析来看,对python -m是什么意思CentOS 升级 Python3 ( ...

  8. arm-linux下如何安装GDB?pc-linux下如何升级GDB?

    文章目录 在arm-linux系统下安装GDB(没成功) 下载gdb 将gdb压缩包拷贝到arm-linux系统的/userdata/arnold_software路径下 解压gdb压缩包 编译arm ...

  9. 阿里云云效功能升级,支持快速创建多个应用的独立测试环境

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 作为测试人员来说,搭建测试环境是测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性.为了更好地 ...

最新文章

  1. 两个字符串之间的复制,不使用strcopy()函数
  2. php批量处理图片大小,word图片怎么批量调整大小
  3. python获取原图GPS位置信息,轻松得到你的活动轨迹
  4. html中字体响应式怎么写,css字体单位之间的区分以及字体响应式实现_html/css_WEB-ITnose...
  5. win10 子系统 ubuntu 16.04 安装 docker
  6. 长在华人第一学霸家族的他,到底有多牛?
  7. 钉钉一个人怎么多部门 钉钉一个人加入多个部门的技巧
  8. 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
  9. 如何创建和使用Web服务(转)
  10. 關於GoogleUpdate.exe
  11. java速学堂,速学堂 JAVA300 第四章练习
  12. WEB UI设计规范
  13. vue鼠标右击事件@contextmenu.prevent
  14. 基于MATLAB的计算机视觉和图像处理代码
  15. linux chmod 777 dev,ubuntu – 撤消chmod 777
  16. Next数组个人理解
  17. 搭档之家|紧跟信息消费大发展时代步伐
  18. USB PD 等多协议快充方案
  19. 【记录】使用在线KMS激活Office系列
  20. UEFI——UEFI Package Module

热门文章

  1. Spark SQL函数总结
  2. okcoin 爱沙尼亚_我如何成为爱沙尼亚的电子居民
  3. cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie
  4. C语言 加减乘除运算
  5. 基于人工智能的多肽药物分析的子问题——蛋白质的三级结构预测的第一周学习记录
  6. 飞行堡垒fx80g拆卸电源_华硕飞行堡垒第五代FX80拆机加装内存条教程(整盖翻转拆机)...
  7. python定义字符串变量有两种常用方式_Python 1基础语法二(标识符、关键字、变量和字符串)...
  8. PDF如何转换成PPT?教你们几个简单方法
  9. 智汀智能家居知识普及篇——为什么智能家居在国内不温不火?
  10. 144hz和60hz测试软件,关于显示器,60hz与144hz,以个人角度,给大家分享心得…