[daily] 在CentOS7中使用 sanitizer-address 发现内存问题 / CentOS7使用SCLo软件源安装devtoolset软件
接前文:
[daily] 内存越界的分析与定位
如前文提及, 使用sanitizer-address 可以有效的检查程序的内存问题。
当时在CentOS7中,虽然也可以使用,但是却遇到如下两个问题:
1. 程序崩溃时的打印信息中,缺少代码信息,虽然知道出了问题,但是却并不知道具体问题处在哪一个地方,哪一行。
2. 不能对 sanitizer-address 设置断点。从而在发生问题的时候,保留运行信息。
对比,我的archlinux,却没有这个问题。我想唯一的区别应该就是gcc的版本问题。
arch的gcc版本是7, CentOS7的gcc版本是4.8.5
所以解决这问题的思路就是安装一个高版本的gcc。
那么在 CentOS7中,安装高版本gcc,一般有两个方法:
1, 使用源码。
2. 使用SCLo
什么是SCLo,简单的说,就是比epel更丰富的软件包集合:
https://www.softwarecollections.org/en/about/
快速使用方法:
https://www.softwarecollections.org/en/docs/
yum install centos-release-scl
好了,有了SCLo库之后,我们就可以安装GCC7了。
yum install devtoolset--gcc
再装GCC7的 libasan
yum install devtoolset--libasan-devel
他们是devtoolset,和常规的软件还不太一样
devtoolset- - Developer Toolset is designed for developers working on CentOS or Red Hat Enterprise Linux platform. It provides current versions of the GNU Compiler Collection,
GNU Debugger, and other development, debugging, and performance monitoring tools.
因为他们都是装在opt下面的,
[root@dpdk chimpanzee]# rpm -ql devtoolset--libasan-devel
/opt/rh/devtoolset-/root/usr/lib/gcc
/opt/rh/devtoolset-/root/usr/lib/gcc/x86_64-redhat-linux
/opt/rh/devtoolset-/root/usr/lib/gcc/x86_64-redhat-linux/
/opt/rh/devtoolset-/root/usr/lib/gcc/x86_64-redhat-linux//libasan.a
/opt/rh/devtoolset-/root/usr/lib/gcc/x86_64-redhat-linux//libasan.so
/opt/rh/devtoolset-/root/usr/lib/gcc/x86_64-redhat-linux//libasan_preinit.o
/opt/rh/devtoolset-/root/usr/share/doc/devtoolset--libasan-devel-7.2.
/opt/rh/devtoolset-/root/usr/share/doc/devtoolset--libasan-devel-7.2./ChangeLog.bz2
/opt/rh/devtoolset-/root/usr/share/doc/devtoolset--libasan-devel-7.2./LICENSE.TXT
[root@dpdk chimpanzee]#
配置一下,就可以用了
[root@dpdk chimpanzee]# source /opt/rh/devtoolset-/enable
[root@dpdk chimpanzee]# gcc -v
... ...
gcc version 7.2. (Red Hat 7.2.-) (GCC)
这个 enable 属于软件 devtoolset-7-runtime
[root@dpdk chimpanzee]# rpm -qf /opt/rh/devtoolset-/enable
devtoolset--runtime-7.0-.el7.sc1.x86_64
这个时候,再去使用sanitizer编译程序,之后就能够看见调试信息了,也能够成功的断到libasan的断点了。
[daily] 在CentOS7中使用 sanitizer-address 发现内存问题 / CentOS7使用SCLo软件源安装devtoolset软件的更多相关文章
- centos7中修改运行级别
centos6 在centos6里打开vim /etc/inittab文件看到下面有一行 id:5:initdefault,因此我们可以通过修改这个文件的id后的数字来修改运行级别 如果我们想要直接切 ...
- 【原创】主机不能访问虚拟机CentOS7中的站点
主机不能访问虚拟机CentOS7中的站点 ================================ 虚拟机上装好了centos7,并配好了nginx+php+mysql,但是本机就是无法访问. ...
- Centos7中hadoop配置
Centos7中hadoop配置 1.下载centos7安装教程: http://jingyan.baidu.com/article/a3aad71aa180e7b1fa009676.html (注意 ...
- CentOS7中DHCP配置
因为需要网络引导系统的安装,所以需要安装和配置DHCP服务器.DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议,它提供了一种动态指定IP地址和配置参 ...
- 在centos7中限制kvm虚拟机可访问的资源
最近通过艰苦卓绝的度娘(我很想用谷歌,可是,你懂的),终于搞明白如何在centos7中限制kvm虚拟机可访问的资源了.度娘给出的结果中,大部分都说的很对,然而,却很难照着做,主要原因有两点:1.网上的 ...
- Centos7中网络及设备相关配置
centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...
- CentOS7中使用yum安装Nginx的方法
最近无意间发现Nginx官方提供了Yum源.因此写个文章记录下. 1.添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址.因此可以如下执行命令添加源: ...
- <亲测>CentOS7中使用yum安装Nginx的方法
CentOS7中使用yum安装Nginx的方法 最近无意间发现Nginx官方提供了Yum源.因此写个文章记录下. 1.添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了 ...
- Centos7中ELK集群安装流程
Centos7中ELK集群安装流程 说明:三个版本必须相同,这里安装5.1版. 一.安装Elasticsearch5.1 hostnamectl set-hostname elk vim /e ...
随机推荐
- List 比较大小
List<Player> lst = new List<Player>(); lst.Add()); lst.Add()); lst.Add()); lst.Add()); l ...
- [Big Data - Kafka] Kafka设计解析(二):Kafka High Availability (上)
Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务.若该Broker永远不能再恢复,亦 ...
- pycharm如何在debug的时候动态执行python语句
在调试MATLAB的时候,这一点很容易实现,比如动态修改变量的值,在VS2017中调试python程序,这一点也很容易实现,但是我在pycharm里面找了半天,如下图:
- MXNET:分类模型
线性回归模型适用于输出为连续值的情景,例如输出为房价.在其他情景中,模型输出还可以是一个离散值,例如图片类别.对于这样的分类问题,我们可以使用分类模型,例如softmax回归. 为了便于讨论,让我们假 ...
- mxnet:基础知识和一个简单的示例
NDArray与NumPy的多维数组类似,但NDArray提供了更多的功能:GPU和CPU的异步计算:自动求导.这使得NDArray能更好地支持机器学习. 初始化 from mxnet import ...
- Linux expect 使用(免密登录跳板机)
登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码一直输错,哈哈哈). ...
- 飞鱼48小时游戏创作嘉年华_厦门Pitch Time总结与收获
一.48小时游戏开发前期准备 1,策划 明确美术队友和程序队友的水平,提需求的过程中尝试做减法,在保留核心玩法的基础上,看队友水平和时间判断是否添加需求. 策划是整个游戏团队的灵魂,也是开发的上限所在 ...
- Path expected for join!错误处理
在Hibernate中,进行连接查询时,如果使用join语句,就容易产生标题所示的错误. 比如from Content o left join Mcp mcp where o.mcp.id=mcp.i ...
- golang获取命令行参数
部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库. 1.golang os库获取命令行参数 os可以通过变量Args来获取命令 ...
- flume 1.8 安装部署
环境 centos:7.2 JDK:1.8 Flume:1.8 一.Flume 安装 1) 下载 wget http://mirrors.tuna.tsinghua.edu.cn/apa ...