C++学习——介绍一些C++内存检测工具

2023-05-16

1.C/C++ 内存治理神器 - Google Sanitizers

Santizers是由Google开发的开源工具,集成在LLVM项目中,来检查内存泄漏和其他内存错误。Sanitize工具是一组用于检测内存错误的工具,包括地址、内存泄漏、使用未初始化的内存、使用已释放的内存等。总共包括如下子项目:

AddressSanitizer(ASan):有来作堆、栈、全局变量越界分析;多次动态内存释放或无效释放
LeakSanitizer(LSan):内存泄漏分析
ThreadSanitizer(TSan):线程分析
UndefinedBehaviorSanitizer(UBSsan):无定义行为分析
MemorySanitizer(MSan):内存分析

在这里,我们将使用AddressSanitizer和UndefinedBehaviorSanitizer。

首先,我们需要在编译时启用Sanitize工具。在CMakeLists.txt文件中,我们需要添加以下代码:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=undefined")

然后,我们需要重新编译代码。在编译完成后,我们可以使用以下命令运行代码:

./path/to/your/program

如果程序中存在内存错误,Sanitize工具将会输出错误信息。我们可以根据错误信息来修复代码中的错误。
-fsanitize=leak是GCC和Clang提供的一种内存泄漏检测工具,它可以检测出程序中的内存泄漏问题。在使用这个工具时,可以使用以下参数:

-fsanitize=leak:启用内存泄漏检测工具。

-fsanitize=leak-trace-objects:在检测到内存泄漏时,输出泄漏对象的详细信息。

-fsanitize=leak-check:在程序退出时,检查是否有内存泄漏。

-fsanitize=leak-check-full:在程序退出时,检查是否有内存泄漏,并输出泄漏对象的详细信息。

-fsanitize=leak-check-strict:在程序退出时,检查是否有内存泄漏,并输出泄漏对象的详细信息。如果有内存泄漏,程序会直接退出。

-fsanitize=leak-check-strict-keep-files:在程序退出时,检查是否有内存泄漏,并输出泄漏对象的详细信息。如果有内存泄漏,程序会直接退出。同时,会将泄漏对象的信息保存到文件中。

-fsanitize=leak-check-strict-keep-frames:在程序退出时,检查是否有内存泄漏,并输出泄漏对象的详细信息。如果有内存泄漏,程序会直接退出。同时,会将泄漏对象的信息保存到文件中,并且保存泄漏对象的调用栈信息。

-fsanitize=leak-check-strict-keep-frames-and-objects:在程序退出时,检查是否有内存泄漏,并输出泄漏对象的详细信息。如果有内存泄漏,程序会直接退出。同时,会将泄漏对象的信息保存到文件中,并且保存泄漏对象的调用栈信息和对象信息。

valgrind

Valgrind是一个用于检测内存泄漏和其他内存错误的工具。要在CMakeLists.txt文件中使用Valgrind,我们需要添加以下代码:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g")

然后,我们需要重新编译代码。在编译完成后,我们可以使用以下命令运行代码:

valgrind --leak-check=full ./path/to/your/program

如果程序中存在内存错误,Valgrind将会输出错误信息。我们可以根据错误信息来修复代码中的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++学习——介绍一些C++内存检测工具 的相关文章

  • FreeRTOS多任务调度原理(基于Cortex-M4)

    目录 1 Cortex M4中SysTick的重要性 2 Cortex M4中的中断管理 3 Cortex M4中影子栈指针 4 Cortex M4中SVC和PendSV异常 5 多任务启动 6 PendSV业务流程 7 系统时钟节拍详解
  • Pytorch 线性回归 grad清零报错:w.grad.data.zero_() AttributeError: 'NoneType' object has no attribute 'data'

    学习了https github com L1aoXingyu code of learn deep learning with pytorch blob master chapter3 NN linear regression gradie
  • 查看一台机器的vnc端口及vnc是否开启

    netstat lnpt grep Xvnc 查的到端口说明开的 如果没开用命令开 systemctl start vncserver 64 1 service
  • CMMI等级划分和对照

    CMMI xff08 Capability Maturity Model Integration xff09 即软件成熟度集成模型 是力图通过一套模型改善软件质量 xff0c 规范软件过程管理的模型 由于软件开发的随意和变动性比较大 xff
  • 关于解决校园网Drcom经常掉线的问题

    关于解决一些电脑由于使用WIFI共享而导致校园网Drcom经常掉线 xff1a 第一种方式 xff1a 打开控制面板 gt 网络和共享中心 gt 更改适配器设置 xff0c 再找到无线网络连接如下图所示 xff1a 鼠标右键 点开属性栏 找
  • pytorch学习日记(二)——之cv2,matplotlib,PIL比较及与Tensor的转换

    用python进行图像处理中分别用到过matplotlib pyplot PIL cv2三种库 xff0c 这三种库图像读取和保存方法各异 xff0c 并且图像读取时顺序也有差异 xff0c 如plt imread和PIL Image op
  • Python123第七周编程题

    1 文本的平均列数 span class token keyword with span span class token builtin open span span class token punctuation span span c
  • 如何完全卸载PyCharm

    进入bin文件 xff0c 找到uninstall xff0c 双击即可
  • 递归算法的简单示例

    1 xff0c 递归实现sum 函数 span class token keyword def span span class token function sum span span class token punctuation spa
  • 记事本文件保存为JAVA文件

    如何将记事本文件保存为java文件 xff1f 1 xff0c 在将记事本文件保存后 xff0c 在通过将文件名 xff08 以hello为例 xff09 后缀改为 java后 xff0c 通过查看其属性发现其格式为hello java t
  • 队列的简单示例

    1 xff0c 队列的简单应用 热土豆问题 span class token keyword from span pythonds span class token punctuation span basic span class tok
  • Git使用经验指南小结

    在使用git的时候 xff0c 每次都要查询需要的命令 xff0c 费时费力 xff0c 在这里简单总结下容易遗忘的点与命令行 xff1a 1 xff0c 首先需要安装git 安装完成后 xff0c 通过以下指令查看git版本 span c
  • 正版matlab安装详解——基于linux服务器平台正版非镜像安装

    想要在学校服务器上安装matlab 但是搜索了半天 xff0c 没有发现什么详细的攻略 xff0c 先将其总结如下 xff1a 1 在根据当前服务器环境选择合适的matlab后 xff0c 上传至服务器文件夹 xff1b 并完成解压 xff
  • 【疑难杂症】Ubuntu安装uWsgi出现的问题

    在Ubuntu环境下安装uWsgi的时候出现了一些问题 1 xff1a 安装时出现错误 xff1a x86 64 linux gnu gcc pthread plugins python python plugin o In file in
  • 基于Hexo框架快速搭建个人博客--搭建(一)

    基于Hexo框架快速搭建个人博客 搭建 xff08 一 xff09 一 HEXO框架二 安装Node js三 安装Git四 安装Hexo五 设置主题六 本地发布文章七 总结 博客链接 xff1a 会思想的苇草i文章链接 xff1a 基于He
  • 安装UR5功能包(翻译)

    翻译地址 由于本人能力有限 xff0c 难免存在模糊或错误之处 xff0c 希望见谅和指正 如果能够对你有点帮助 xff0c 我会感到荣幸 安装 有两种方法用来安装UR5功能包 第一种是直接使用二进制包来安装 xff0c 第二种是在catk
  • 李飞飞发表研究新成果:视觉推理的推断和执行程序(HR)

    原文 论文导读 xff1a 目前进行视觉推理的方法都是通过黑箱结构将输入直接映射到输出 xff0c 而不是对潜在的推理过程进行明确建模 这样一来 xff0c 黑箱模型学习到的是利用数据内的偏置而不是学习进行视觉推理的过程 受到模块化网络的启
  • 构建Linux Samba支持任意WIN10访问(无需改策略)

    传统方式构建的Linux Samba无法直接被WIN10访问 xff0c 大多需要在要访问的WIN10系统上改变组策略 这个方法虽然可行 xff0c 但是大量WIN10系统的组策略修改较为繁琐 之所以WIN10无法访问是当SAMBA连接开始
  • VNC SERVER 安装

    1 用root用户身份运行以下命令 yum install tigervnc server 2 停用防火墙 systemctl stop firewalld service systemctl disable firewalld servi
  • Ubuntu 更换清华大学镜像源

    Ubuntu 更换镜像源 通常我们使用ubunntu的时候总是出现网络过慢导致的更新下载失败等问题 Ubuntu默认的服务器是在国外 xff0c 自然连接就很慢 这里我们更换成国内的镜像源 xff0c 这里使用清华镜像源 操作步骤如下 xf

随机推荐

  • C语言strtok函数的用法

    先理解strtok函数的定义 xff0c 尤其是指针方面的 xff0c 需要自己理解 原型 xff1a char strtok char s const char delim include lt string h gt 分解字符串为一组字
  • ubuntu mate18.04+树莓派4B+ROS安装详细教程

    前记 最近项目需要 xff0c 需要给树莓派4B 安装Ubuntu mate xff0c 本来是一件很简单的事情 xff0c 因为Ubuntu mate官网已经开始支持树莓派4B了 xff0c 但是实际操作后 xff0c 才发现烧录官方的桌
  • FreeRTOS可视化追踪软件 —— 破解Tracealyzer 4.2.12

    方法一 愚人节破解Tracealyzer 4 2 12 xff08 若发这里不妥 xff0c 可通知删贴 xff09 http www stmcu org cn module forum thread 620069 1 1 html 4 3
  • tensorflow2(GPU)显卡版安装

    准备工作 硬件 xff1a 一张算力3 5以上的NVIDIA显卡 查询链接 link 软件 xff1a Miniconda3 pycharm NVIDIA显卡驱动 30系列以前 xff1a cuda 10 1 cudnn 10 1 v7 6
  • elasticsearch底层引擎替换之索引创建+文档添加

    最近在改elasticsearch的源码 xff0c 真的蛋疼 xff0c 现在先记录一下遇到的问题 首先 xff0c 我们在做的是替换掉elasticsearch的底层引擎 xff0c 也就是把lucene替换成我们自己的引擎 这个工作起
  • Winform 集成零散dll进exe的方法

    Winform程序经常需要引用一些第三方控件 xff0c 这些控件大多以DLL的形式提供 另外 xff0c 一般USB桥芯片的官方提供 net操作类库也都是DLL形式提供的 因此一个稍大的项目中往往有一大堆的零散的DLL文件 xff0c 而
  • vncserver 使用遇到的问题

    今天使用vncserver遇到了几个问题 xff0c 如下 xff1a 1 使用普通账户无法修改该账户下的vncpasswd xff1a 解决方法 xff1a 打开 vnc目录 xff0c ls l看一下发现 passwd这个文件的用户和用
  • slf4j的MDC对象和ThreadLocal简单分析

    MDC xff08 Mapped Diagnostic Context xff0c 映射调试上下文 xff09 是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能 某些应用程序采用多线程的方式来处理多个用户的请求
  • springboot中@bean的lite模式

    当 64 Beans相互依赖时 xff0c 表示依赖关系就像一个bean方法调用另一个方法一样简 单 xff1a 64 Configuration public class AppConfig 64 Bean public Foo foo
  • spring bean解析源码分析

    转自https www jianshu com p 19e01388ccc5 前言 Spring源码分析是一个系列 xff0c 源码是Spring 4 X xff0c 本系列主要分析Spring的代码执行流程 xff0c 过于细节的内容将不
  • springboot remote shell简单实例

    springboot项目可以使用远程shell进行监控和管理 xff08 在2 0版本就不可以使用了 xff0c 此处要注意 xff09 使用时先添加spring boot remote shell 的依赖 xff0c gradle项目自己
  • 2021-08-30 创建tensor时,注意不要让梯度消失了

    下面这种是错误的 xff0c 梯度会消失 data span class token operator 61 span torch span class token punctuation span tensor span class to
  • 嵌入式学习项目实战 --- 在线词典

    目录 一 前言 二 项目功能 三 程序流程 1 客户端 2 服务器 四 代码实现 1 客户端代码 2 服务器代码 3 Makefile 一 前言 本文学习自 华清远见 的一个开源嵌入式项目在线词典综合实战 xff0c 涵盖了网络编程 文件I
  • hexo博客的制作

    安装Hexo 首先来看看我的hexo的博客演示 地址 xff1a http 91lyj xyz 我的ssm博客地址 xff1a www iclyj cn a target blank href http 91lyj xyz http 91l
  • win10系统CUDA10.0安装教程(for tensorflow2.0)

    前言 xff1a 目前最新的CUDA版本是10 1 xff0c 但是出于某种神秘的原因 xff0c 目前tensorflow2 0仅支持CUDA10 0 这个已经在我的电脑与一部分网友的反馈中得到了证实 tensorflow2 0不仅绑定了
  • 数学学习——Borel-Cantelli 引理证明

  • linux中的设备名称和设备号

    看赵炯博士的 linux 0 11 源代码注释 已经两三周了 xff0c 从今天起开始将一些个人总结和感悟分小标题写出来 xff0c 聊作记忆以供后来查看 在linux0 11源码的 linux boot bootsect s中 xff0c
  • python学习——numpy savetxt 追加模式

    因为savetxt的第一个参数f xff0c 可以是file handle xff0c 也可以是file name 所以用以下的这个代码就可以 xff1a span class token keyword with span span cl
  • 量化投资学习——A股H股套利年化100%

    一 交易对象选取 首先是选取数据 xff0c 选取数据的来源是wind xff1a 从wind中的交易数据 AH比较 里面可以看到历史收盘价和A H溢价率 xff0c 考虑到在2008年金融危机之后 xff0c 全球市场发生了较大的变化 x
  • C++学习——介绍一些C++内存检测工具

    1 C C 43 43 内存治理神器 Google Sanitizers Santizers是由Google开发的开源工具 xff0c 集成在LLVM项目中 xff0c 来检查内存泄漏和其他内存错误 Sanitize工具是一组用于检测内存错