内存泄漏,我们经常会遇到,如何检测内存泄漏,除了我们之前讲过的 valgrind,还可以使用 gcc 自带的工具 sanitizer。
从 gcc 4.8 开始,sanitizer 就被加入到 gcc 中,使用起来非常方便,可以检测内存泄漏、内存越界、野指针等等。
下面来简单演示下怎么使用。
void leak_memory()
{
char *ptr = (char *)malloc(128);
}
比如这段代码,一眼看出内存泄漏。
# gcc test.c -o test -g -fsanitize=address
编译的时候加上 -g 选项,方便后续调试,再加上 -fsanitize=address,得到二进制文件。
root@Turbo:~# ./test
=================================================================
==374040==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 128 byte(s) in 1 object(s) allocated from:
#0 0x7d41794fd9c7 in malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
#1 0x62d90d0dc25e in leak_memory /root/test.c:5
#2 0x62d90d0dc4e7 in main /root/test.c:43
#3 0x7d417902a1c9 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
#4 0x7d417902a28a in __libc_start_main_impl ../csu/libc-start.c:360
#5 0x62d90d0dc184 in _start (/root/test+0x1184) (BuildId: a2e83d98f01d2da94cd327af18f596c19fc367bb)
SUMMARY: AddressSanitizer: 128 byte(s) leaked in 1 allocation(s).
root@Turbo:~#
运行程序,会提示一大堆错误。虽然全是英文,但是阅读起来也没什么难度,只要你有英语三级的水平,应该能发现,内存泄漏了。
再来个代码,栈内存越界访问。
void stack_overflow() { int array[5] = {0}; array[5] = 1; }
同样的方法,编译运行,提示栈内存溢出。
至于其他的内存问题,释放不合法的内存、内存被释放了又继续使用、两次释放同一块内存,这些问题统统可以检查。
非常实用的工具,调试代码的时候,可以帮我们节省很多时间。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内存
+关注
关注
9文章
3229浏览量
76495 -
调试工具
+关注
关注
1文章
59浏览量
13027 -
内存泄漏
+关注
关注
0文章
42浏览量
9536
原文标题:内存泄漏调试工具Sanitizer
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
写了一个内存泄漏检查工具
嵌入式环境内存泄漏检查比较麻烦,valgrind比较适合于在pc上跑,嵌入式上首先移植就很麻烦,移植完了内存比较小,跑起来也比较费劲。所以手动写了一个内存
发表于 12-17 08:25
使用开源工具Address Sanitize致力于Go工具链的优化和特性的支持
我们检测此类错误。Address SanitizerAddress Sanitizer(ASan)是一个快速的内存错误检测工具,它可以检测以
发表于 07-11 16:03
泄漏检测技术
从割草机到咖啡机,任何的流体处理设备都需要进行泄漏检测,从而为其投入市场做论证准备。通常,应用在样机设计阶段的泄漏检测方法也是在大批量生产中用于检测的最好方法
发表于 01-23 12:04
•13次下载
腾讯内部内存泄漏分析工具简析
精益求精。 链接:wetest.qq.com 工具使用入口 【工具简介】 tMemoryMonitor简称TMM,是一款运行时C/C++内存泄漏检测工具。TMM认为在进程退出时,
发表于 10-11 15:30
•0次下载
氨气泄漏的危害_氨气泄漏检测仪怎么使用_氨气泄漏检测仪的使用方法
氨气泄漏检测仪 氨气泄漏检测仪测量范围:0-100ppm、0-400ppm,声光报警,高防水防尘设计,具有数据存储功能,声光报警。
发表于 01-03 09:57
•3189次阅读
真空泄漏检测仪的重要性和应用
真空泄漏检测仪是一种强大的设备,它能够检测和定位系统或部件的微小泄漏。在许多行业中,包括汽车、航空航天、医疗设备和半导体等,这种设备都是必不可少的。下面我们将详细讨论真空泄漏检测仪的重
如何写一个内存泄漏检测工具
如何确定有内存泄露问题,如何定位到内存泄露位置,如何写一个内存泄漏检测工具? 1:概述 内存泄露本质:其实就是申请调用malloc/new,
如何检测内存泄漏
检测内存泄漏是软件开发过程中一项至关重要的任务,它有助于识别和解决那些导致程序占用过多内存资源,从而影响程序性能甚至导致程序崩溃的问题。以下将详细阐述几种常见的
内存泄漏检测工具Sanitizer介绍
评论