内存检查工具

简介: <div> <p style="orphans:2; widows:2; border:0px; font-family:'Helvetica Neue',Helvetica,Arial,sans-serif; font-size:15px; margin-top:0px; margin-bottom:1.625em; outline:0px; padding-top:0px; padd

内存检测工具主要用于检测程序的堆栈错误。一般的检测方法是通过加magic number来表示正确的内存信息。如果magic number被写坏,那么就表示内存错乱了。

1编译选项:

-fstack-protector & -fstack-protector-all

-fstack-protector

在函数的stack上加一个magic number,如果buffer overflows的话,程序直接退出。

函数开始时加入,退出时检测。

*** stack smashing detected ***: ./test terminated

2环境变量

MALLOC_CHECK_检测堆错误。

若将MALLOC_CHECK_设置为0,则在检查到错误时不作任何提示。

若将MALLOC_CHECK_设置为1,则在检查到错误时打印一条信息到标准错误输出。

若将MALLOC_CHECK_设置为2,则在检查到错误时直接调用abort()中止程序。

3 lib :mcheck

在编译时链接 –lmcheck, 会起到和上诉边境变量相同的效果,不过,mcheck这个lib是线程不安全的。

如果出错,程序直接退出,并打印出:memory clobbered before allocated block

3: mudflap

http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging

使用方法:

1:添加编译选项:-fmudflap

2:添加lib: -lmudflap

3:环境变量export MUDFLAP_OPTIONS=’<options>

检查非常严格,任何读写越界都会报错。’

4:mtrace:用于查看内存泄露

使用方法:

1.设置环境变量 MALLOC_TRACE指定程序输出log文件

2.包含mcheck.h文件

3.程序开始时调用 mtrace()

4.运行程序

5.使用mtrace查看log文件

5:dmalloc

需要安装http://dmalloc.com/releases/dmalloc-5.5.2.tgz

使用方法:

1:设置环境变量:

在terminal输入export DMALLOC_OPTIONS=log=logfile, debug=0×3(in Bash)/export

2:在源文件中添加下面的C代码:

#include “dmalloc.h”

值得注意的是:要在每一个.C文件里面添加,而且必须添加在所包含的头文件最后一行!

3编译选项:-DDMALLOC -DDMALLOC_FUNC_CHECK

4:lib:-ldmalloc

6 memwatch:

用于检测内存泄露

memwatch不需要安装,只要下载包解压即可,有用的文件只有memwatch.c&memwatch.h,把这两个文件放入要检测的程序的文件夹中即可。编译的命令为:gcc -DMEMWATCH -DMW_STDIO test.c memwatch.c -o test

7:valgrind:

这个资料比较多。

目录
相关文章
|
2月前
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
|
8天前
|
监控 Java
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
18 0
|
1月前
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
76 2
|
26天前
|
存储 监控 安全
JVM内存问题之如何比较不同时间点的pmap输出以检查新增或变大的内存段
JVM内存问题之如何比较不同时间点的pmap输出以检查新增或变大的内存段
|
26天前
|
Java 运维
开发与运维内存问题之触发Full GC,类加载检查如何解决
开发与运维内存问题之触发Full GC,类加载检查如何解决
18 0
|
1月前
|
监控 算法 Java
怎么用JDK自带工具进行JVM内存分析
JVM内存分析工具,如`jps`、`jcmd`、`jstat`、`jstack`和`jmap`,是诊断和优化Java应用的关键工具。`jps`列出Java进程,`jcmd`执行诊断任务,如查看JVM参数和线程堆栈,`jstat`监控内存和GC,`jstack`生成线程堆栈信息,而`jmap`则用于生成堆转储文件。这些工具帮助排查内存泄漏、优化内存配置、性能调优和异常分析。例如,`jmap -dump:file=heapdump.hprof &lt;PID&gt;`生成堆转储文件,之后可以用Eclipse Memory Analyzer (MAT)等工具分析。
|
2月前
|
C++
内存泄漏检查工具下载(vld)
内存泄漏检查工具下载(vld)
|
1月前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
37 0
|
3月前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。
|
3月前
|
NoSQL Linux Redis
Redis内存分析工具RDR
Redis内存分析工具RDR
1706 1