centos升级gdb支持pretty-printer
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,就说明升级成功!
常见错误:
- 输入
enable pretty-printer
后显示1 of 1 printers enabled
,说明pretty-printer开启失败,很可能是没有配置gdbinit导致 - 切记提前安装texinfo
- .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}],
结束语
其实非常简单,步骤也不多,但是每个博客踩的坑也不一样,也许有的人不需要这么完整的步骤就能成功,下面列了参考文章。
参考博客
- Centos7 [安装/升级] GDB
- centos 编译gdb发生错误 missing: line 81: makeinfo: command not found
- gdb配置打印STL容器脚本pretty printer
- GDB的Pretty Printer功能
- 01_gdb容器可视化概论
- 02_gdb_pretty_printer加载原理
centos升级gdb支持pretty-printer相关推荐
- centos 升级glibcc++
c++调用lua匿名函数 https://blog.csdn.net/zhfk2004/article/details/102716134 centos 升级glibc++ https://zhuan ...
- ssh 用密码连接不上、查看openSSH 的版本、CentOS - 升级openSSH,修复安全漏洞
一 ssh密码连接 1,检查ssh配置文件 #vim /etc/ssh/sshd_config 130 UseDNS no 131 AddressFamily inet 132 PermitRoot ...
- Centos 升级linux内核版本
有两种方法可以升级Centos内核版本.分别是:1. 下载linux内核源码,编译内核源码进行安装.2:下载官方的rpm包进行安装升级.下面分别进行说明. 一.使用下载内核源码进行升级 1.1.从官网 ...
- 利用 scl 为 CentOS 升级 gcc 版本
利用 scl 为 CentOS 升级 gcc 版本 (一)背景 在搞 dpvs 期间遇到的一个问题,在编译 dpdk 程序时会根据所在服务器的 cpu 所拥有的指令集,为了尽可能提高程序效率,将较新的 ...
- CentOS 升级内核的三种方式(yum/rpm/源码)
CentOS 升级内核的三种方式(yum/rpm/源码) 在 CentOS 使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍三种升级内核方式 ...
- 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练
计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: • 增加了大量骨干网络的支持,增强 ...
- python35是什么意思_python -m是什么意思CentOS 升级 Python3 (附带: 一键升级脚本)...
一键安装脚本(附带) 电脑技术网从python -m是什么意思CentOS 升级 Python3 (附带: 一键升级脚本)分析来看,对python -m是什么意思CentOS 升级 Python3 ( ...
- arm-linux下如何安装GDB?pc-linux下如何升级GDB?
文章目录 在arm-linux系统下安装GDB(没成功) 下载gdb 将gdb压缩包拷贝到arm-linux系统的/userdata/arnold_software路径下 解压gdb压缩包 编译arm ...
- 阿里云云效功能升级,支持快速创建多个应用的独立测试环境
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 作为测试人员来说,搭建测试环境是测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性.为了更好地 ...
最新文章
- 两个字符串之间的复制,不使用strcopy()函数
- php批量处理图片大小,word图片怎么批量调整大小
- python获取原图GPS位置信息,轻松得到你的活动轨迹
- html中字体响应式怎么写,css字体单位之间的区分以及字体响应式实现_html/css_WEB-ITnose...
- win10 子系统 ubuntu 16.04 安装 docker
- 长在华人第一学霸家族的他,到底有多牛?
- 钉钉一个人怎么多部门 钉钉一个人加入多个部门的技巧
- 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
- 如何创建和使用Web服务(转)
- 關於GoogleUpdate.exe
- java速学堂,速学堂 JAVA300 第四章练习
- WEB UI设计规范
- vue鼠标右击事件@contextmenu.prevent
- 基于MATLAB的计算机视觉和图像处理代码
- linux chmod 777 dev,ubuntu – 撤消chmod 777
- Next数组个人理解
- 搭档之家|紧跟信息消费大发展时代步伐
- USB PD 等多协议快充方案
- 【记录】使用在线KMS激活Office系列
- UEFI——UEFI Package Module
热门文章
- Spark SQL函数总结
- okcoin 爱沙尼亚_我如何成为爱沙尼亚的电子居民
- cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie
- C语言 加减乘除运算
- 基于人工智能的多肽药物分析的子问题——蛋白质的三级结构预测的第一周学习记录
- 飞行堡垒fx80g拆卸电源_华硕飞行堡垒第五代FX80拆机加装内存条教程(整盖翻转拆机)...
- python定义字符串变量有两种常用方式_Python 1基础语法二(标识符、关键字、变量和字符串)...
- PDF如何转换成PPT?教你们几个简单方法
- 智汀智能家居知识普及篇——为什么智能家居在国内不温不火?
- 144hz和60hz测试软件,关于显示器,60hz与144hz,以个人角度,给大家分享心得…