b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

为Linux下的C / C ++程序共享几个内存泄漏检查工具

电脑杂谈  发布时间:2020-07-30 23:09:19  来源:网络整理

c  内存检测工具_内存 检测 工具_内存检测

首先,下面将介绍几种内存泄漏检查工具

Valgrind的详细说明

Valgrind包括以下工具:

1.Memcheck: 这是valgrind使用最广泛的工具,它是一种重量级的内存检查器,可以检测开发中的大多数内存错误,例如: 使用未初始化的

2.callgrind: 主要用于检查程序中调用函数过程中的问题

3.cachegrind: 主要用于检查程序中缓存使用的问题

内存 检测 工具_内存检测_c  内存检测工具

4.Helgrind: 主要用于检查多线程中的竞争问题

5.Massif: 它主要用于检查程序中堆栈使用中的问题

6.Extension: 您可以使用内核提供的功能来编写自己的特定内存调试工具

Linux程序的内存空间布局

内存检查原理

Memcheck检测内存问题的:

c  内存检测工具_内存 检测 工具_内存检测

1. 有效值表:

对于进程的整个地址空间中的每个字节(字节),有8位对应于它c 内存检测工具,对于CPU的每个寄存器,也有对应于它的位向量. 这些位负责记录字节或寄存器值是否具有有效的初始化值

2. 有效地址表

对于进程的整个地址空间中的每个字节,还有一个对应的1bit,用于记录该地址是否可以读取或写入.

检测原理

当您要在存储器中读取或写入一个字节时,请首先检查与该字节对应的A位. 如果A位表明该位置无效,则memcheck报告读取和写入错误.

内核类似于虚拟CPU环境,因此,当将内存中的一个字节加载到实际CPU中时,与该字节对应的V位也将加载到虚拟CPU环境中. 用于生成内存地址,或者该值会影响程序的输出,memcheck将检查相应的vbit. 如果该值尚未初始化,它将使用未初始化的内存报告错误.

接下来,我将主要介绍valgrind的安装和使用. 关于其他工具,您可以查看信息,谢谢您的配合!

Valgrind安装

1. 解压安装包

内存检测_c  内存检测工具_内存 检测 工具

tar -jxvf valgrind-3.11.0.tar.bz2 -C / usr / local / src

2. 输入要安装的目录

cd /usr/local/src/valgrind-3.11.0

3. 运行./autogen.sh设置环境(需要标准的autoconf工具)

./ autogen.sh

4. 配置Valgrind并生成MakeFile文件

./ configure --prefix = / usr / local

5. 编译并安装valgrind

使&&使installvalgrind使用

第一步: 准备程序

内存检测_c  内存检测工具_内存 检测 工具

为了使valgrind发现的错误更精确,例如能够找到源代码行,建议在编译时添加-g参数,并选择编译器优化选项来选择O0(不要优化)

第2步: 在valgrind下运行可执行程序

使用valgrind调试内存问题,无需重新编译源程序,并且其输入是二进制可执行程序. 调用Valgrind的一般格式为: valgrind [valgrind-options] your-prog [your-prog-options]

Valgrind的参数分为两类. 一个是核心参数,适用于所有工具. 另一个是特定工具(例如memcheck)的参数. Valgrind的默认工具是memcheck,其他工具也可以通过“ --tool = tool name”指定. Valgrind提供了大量参数来满足您特定的调试需求,有关详细信息,请参阅其用户手册.

使用Memcheck查找常见内存问题摘要

Memcheck将内存泄漏分为两种类型,一种是可能的内存泄漏(可能丢失)c 内存检测工具,另一种肯定是内存泄漏. 可能丢失意味着有一个指针可以访问内存块,但该指针指向内存的第一个地址. 绝对丢失意味着无法再访问内存. 绝对丢失分为两种: 直接(直接)和间接(间接). 直接和间接之间的区别在于,直接意味着没有指向内存的指针,而间接意味着指向内存的指针位于内存泄漏处. 在上面的示例中,根节点直接丢失,其他节点间接丢失


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-289296-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...