接前文:

[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软件的更多相关文章

  1. centos7中修改运行级别

    centos6 在centos6里打开vim /etc/inittab文件看到下面有一行 id:5:initdefault,因此我们可以通过修改这个文件的id后的数字来修改运行级别 如果我们想要直接切 ...

  2. 【原创】主机不能访问虚拟机CentOS7中的站点

    主机不能访问虚拟机CentOS7中的站点 ================================ 虚拟机上装好了centos7,并配好了nginx+php+mysql,但是本机就是无法访问. ...

  3. Centos7中hadoop配置

    Centos7中hadoop配置 1.下载centos7安装教程: http://jingyan.baidu.com/article/a3aad71aa180e7b1fa009676.html (注意 ...

  4. CentOS7中DHCP配置

    因为需要网络引导系统的安装,所以需要安装和配置DHCP服务器.DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议,它提供了一种动态指定IP地址和配置参 ...

  5. 在centos7中限制kvm虚拟机可访问的资源

    最近通过艰苦卓绝的度娘(我很想用谷歌,可是,你懂的),终于搞明白如何在centos7中限制kvm虚拟机可访问的资源了.度娘给出的结果中,大部分都说的很对,然而,却很难照着做,主要原因有两点:1.网上的 ...

  6. Centos7中网络及设备相关配置

    centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...

  7. CentOS7中使用yum安装Nginx的方法

    最近无意间发现Nginx官方提供了Yum源.因此写个文章记录下. 1.添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了Centos的源地址.因此可以如下执行命令添加源: ...

  8. <亲测>CentOS7中使用yum安装Nginx的方法

    CentOS7中使用yum安装Nginx的方法   最近无意间发现Nginx官方提供了Yum源.因此写个文章记录下. 1.添加源 默认情况Centos7中无Nginx的源,最近发现Nginx官网提供了 ...

  9. Centos7中ELK集群安装流程

    Centos7中ELK集群安装流程   说明:三个版本必须相同,这里安装5.1版. 一.安装Elasticsearch5.1   hostnamectl set-hostname elk vim /e ...

随机推荐

  1. linux 重启和关机

    重启命令有:reboot,  shutdown -ry 0关机命令有:poweroff, shutdown -hy 0

  2. elast alert

    参考文档:<elast alert> 假设报错的内容为: ceph-rest-api service down At least 1 events occurred between 201 ...

  3. sql in not in 案例用 exists not exists 代替

    from AppStoke B WHERE B.Opencode=A.Code) in用extist代替 select distinct * from Stoke where Code not in ...

  4. 项目在iOS11上遇到的小问题

    ​iOS11正式版出了这么久了,在忙完新版本开发,写下在iOS11上的一些小问题. 1  App图标不显示 现象:升级到iOS11系统下自己的项目桌面app图标不见了 出现这种情况我还以为自己手动删除 ...

  5. linux每日命令(20):find命令概览

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...

  6. 【C】——实现tree命令

    在大部分的linux系统中有一个很好用的命令——tree,就是显示目录的结构,但是发现在FreeBSD中没有这个命令,因此自己实现了一个简单的tree.代码如下:主要利用了递归的思想. #includ ...

  7. Java知多少(100)图像处理基础

    图像是由一组像素构成,用二进制形式保存的图片.java语言支持GIF.JPEG和BMP这3种主要图像文件格式.java语言的图像处理功能被封装在Image类中. 图像载入和输出 在java程序中,图像 ...

  8. 第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置

    第三百九十七节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,主题本地化设置 主题设置是在xadmin\plugins\themes.py这个文件 默认xadmin是通过下面这 ...

  9. Ubuntu下Apache虚拟主机+反向代理

    反向代理 就是通过一台代理服务器,让Internet用户可以访问到内部网络上的服务器 下图中192.168.0.4 可以理解带有2个网卡,一个是公网ip,一个是192.168.0.4 代理内外中的2个 ...

  10. Retrofit/Okhttp API接口加固技术实践(上)

    作者:Tamic 地址:http://blog.csdn.net/sk719887916/article/details/61914609 写这篇文章,我纠结了非常久,究竟是属于app安全系列,还是属 ...