接前文:

[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. .NET+MVC+ORACLE存储分页查询一后端实现

    MemberController:public ActionResult UserList() { UserBll userBll = new UserBll(); string keyWords = ...

  2. Android中获取应用程序(包)的信息-----PackageManager的使用

    本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...

  3. JVM 内部原理(五)— 基本概念之 Java 虚拟机官方规范文档,第 7 版

    JVM 内部原理(五)- 基本概念之 Java 虚拟机官方规范文档,第 7 版 介绍 版本:Java SE 7 每位使用 Java 的程序员都知道 Java 字节码在 Java 运行时(JRE - J ...

  4. hive表增量抽取到mysql(关系数据库)的通用程序(三)

    hive表增量抽取到oracle数据库的通用程序(一) hive表增量抽取到oracle数据库的通用程序(二) 这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数.并且可以设置 ...

  5. IP分片与重组详解

    大家对IP数据包头,应该不陌生吧 分片便是与图中圈出来的两个地址有关,本文也是将主要围绕他们展开. 那我们先来了解他们的概念. 标志一个三比特字段遵循与用于控制或识别片段.他们是(按顺序,从高分以低位 ...

  6. c# 正则匹配对称括号

    https://stackoverflow.com/questions/7898310/using-regex-to-balance-match-parenthesis

  7. springcloud-04-自定义ribbon的配置方式

    在dubbo项目中, zookeeper即注册中心帮我们实现了调度和负载均衡的能力, 这种方式被称为服务器端的负载均衡, springcloud中, 使用ribben实现的客户端负载均衡 什么是rib ...

  8. 【netcore入门】在Windows IIS上部署.NET Core 2.1项目

    部署之前先检查下面2个先决条件是否满足 1.安装了 IIS 模块 win7 在 控制面板→程序和功能→打开或关闭Windows功能→勾选Internet 信息服务(Internet Informati ...

  9. Orleans学习总结(五)--监控篇

    上篇说完了Orleans学习总结(四)--集群配置篇,这次我们来说下监控 Orleans有一个强大的社区,为Orleans开发着各种各样的扩展工具,我们用的是OrleansDashboard.Dash ...

  10. python分支语句

    一.if else语句 if 条件表达式: else: a = 3 b = 4 if a >= b: print("a >= b") else: print(" ...