使用AddressSanitizer做内存分析(一)——入门篇
使用AddressSanitizer做内存分析
新建文件mem_leak.cpp,键入代码:
#include <iostream> int main()
{
int* p = new int[];
p = NULL;
return ;
}
编译时加上-fsanitizer=leak选项,并执行:
$ g++ mem.leak.cpp -o main -fsanitize=leak
$ ./main
./main: error while loading shared libraries: liblsan.so.0: cannot open shared object file: No such file or directory
发现报错,找不到liblsan.so。
全局查找liblsan.so:
$ sudo find / -name liblsan.so.
/usr/local/lib/liblsan.so.
/usr/local/lib64/liblsan.so.
/usr/lib/liblsan.so.
/root/open_source/gcc-build-5.1./x86_64-unknown-linux-gnu/libsanitizer/lsan/.libs/liblsan.so.
发现其实是能找到的,只是不在系统默认目录下,这个时候可以采用如下方法:
$ su
Password:
# sudo echo "/user/local/lib64" >> /etc/ld.so.conf
# ldconfig
将 "/user/local/lib64" 追加到 /etc/ld.so.conf 后,echo命令需要root权限,也可以用 sudo vim,直接在 /etc/ld.so.conf 后面添加。
此时再执行之前编译好的可执行文件,即可查看结果:
$ ./main =================================================================
====ERROR: LeakSanitizer: detected memory leaks Direct leak of byte(s) in object(s) allocated from:
# 0x7f3deb1ac816 in operator new[](unsigned long) ../../../../gcc-5.1./libsanitizer/lsan/lsan_interceptors.cc:
# 0x4007f7 in main (/home/minglee/workspace/test_code/mem_leak/main+0x4007f7)
# 0x7f3dea56bc04 in __libc_start_main (/lib64/libc.so.+0x21c04) SUMMARY: LeakSanitizer: byte(s) leaked in allocation(s).
使用AddressSanitizer做内存分析(一)——入门篇的更多相关文章
- SQL调优日志--内存问题排查入门篇
		概述 很多系统的性能问题,是由内存导致的.内存不够会导致页面频繁换入换出,IO队列高,进而影响数据库整体性能. 排查 内存对数据库性能非常重要.那么我当出现问题的时候,我们怎么排查性能问题呢? 存在问 ... 
- 接口测试 Postman 做接口自动化测试_入门篇
		可能是目前最好用的web接口调试工具 无需注册(注册后可多终端同步用例) 免费(每年付费$60可用云服务,30天免费试用) 保存历史记录 支持录制请求 基于Chrome的V8引擎,支持JS脚本(基本支 ... 
- Chrome开发者工具之JavaScript内存分析
		阅读目录 对象大小(Object sizes) 对象的占用总内存树 支配对象(Dominators) V8介绍 Chrome 任务管理器 通过DevTools Timeline来定位内存问题 内存回收 ... 
- [转载]JavaScript内存分析
		https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Performance-Profiling/javasc ... 
- java执行程序的内存分析系列专栏
		近段时间研究了java的程序执行过程中的内存分配,收获颇多,解决了我最近时间学习java的很多困惑点.写java内存分析系列的目的主要有两个,一来是希望给像我一样的java初学者一定的启发,希望也能解 ... 
- Chrome开发者工具之JavaScript内存分析(转)
		尽管JavaScript使用垃圾回收进行自动内存管理,但有效的(effective)内存管理依然很重要.在这篇文章中我们将探讨分析JavaScript web应用中的内存问题.在学习有关特性时请确保尝 ... 
- java执行程序的内存分析系列专栏二之static变量和方法内存分析
		昨天写了简单的聊了下java执行程序时简单的内存划分,今天我们接着往下聊,聊聊static变量和方法的内存分析. 1.static变量和方法的第一个特性内存分析 statiic变量和方法的第一个特性能 ... 
- 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)
		四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ... 
- SpaceSyntax【空间句法】之DepthMapX学习:第一篇 数据的输入 与 能做哪些分析
		两部分,1需要喂什么东西给软件,2它能干什么(输出什么东西在下一篇讲) 博客园/B站/知乎/CSDN @秋意正寒 转载请在头部附上源地址 目录:https://www.cnblogs.com/onsu ... 
随机推荐
- android 和主线程有关的小问题
			1.在android 中 HTTP请求被不允许在主线程中执行,否则会抛出异常.如果请求时间过长,阻塞UI线程是一个非常差的体验之前,刚开始开发遇到这个问题,每次app运行到最后,发送网络请求就自己崩溃 ... 
- bad ELF interpreter
			安装JDK的时候遇到的问题, 多半是64位的系统安装了32位的软件导致的 
- ft,dtft,dft的关系(转载)
			很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DFT,DTFT,DFS,FFT,FT,FS等,FT和FS属于信号与系统课程的内容,是对连续时间信号的处理,这里就不过多讨论,只解释一 ... 
- Android学习路线总结,绝对干货(转)
			title: Android学习路线总结,绝对干货tags: Android学习路线,Android学习资料,怎么学习androidgrammar_cjkRuby: true--- 一.前言 不知不觉 ... 
- [LeetCode系列]链表环探测问题II
			给定一个链表头, 探测其是否有环, 如果没有返回NULL, 如果有返回环开始的位置. 环开始的位置定义为被两个指针指向的位置. 算法描述: 1. 快慢指针遍历, 如果到头说明无环返回NULL, 如果相 ... 
- listener单点登录和在线人数
			1,jsp提交一个form 2,把收集到的数据放到一个personInfo类中,personInfo类放进session中 3,添加的时候触发listener,把一个personInfo的accoun ... 
- EF6:编写你自己的code first 数据迁移操作(睡前来一篇,翻译的)
			原英文版由EF团队成员 Rowan Miller 在2013年发表,此处只作翻译备忘. 数据迁移提供了一套强类型API,用于执行通用的操作,比如CreateIndex("dbo.Blogs& ... 
- 关于FPGA电源精度要求
			FPGA对DC-DC精度的要求不断提升 FPGA厂商不断采用更先进的工艺来降低器件功耗,提高性能,同时FPGA对供电电源的精度要求也越加苛刻,电压必须维持在非常严格的容限内,如果供电电压范围超出了规范 ... 
- eclipse 创建一个java项目 运行
			五.使用Eclipse 1)第一次打开需要设置工作环境,你可以指定工作目录,或者使用默认的C盘工作目录,点击 ok 按钮. 2)创建一个项目 3)输入项目名称,比如我输入Orz_Jlx,然后点击fin ... 
- 螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
			package Day8_06; /*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右.下.左.上螺旋填入的结果. * 例如读入数字4,5,则输出结果为: * 1 2 ... 
