Linux基础 - 内存问题定位工具 ASAN

背景

定位内存泄漏、内存越界读写等问题;

步骤

编译过程

shell 复制代码
ASAN =  -fsanitize=address -fsanitize=leak
CFLAG = $(ASAN)
LDFLAG = -lasan

运行时

shell 复制代码
# 先配置环境变量
## 开启检测内存泄漏
export ASAN_OPTIONS=detect_leaks=1
## 1:检测到错误是就关闭程序 0:不关闭
export ASAN_OPTIONS=${ASAN_OPTIONS}:halt_on_error=1
## 设置日志路径
export ASAN_OPTIONS=${ASAN_OPTIONS}:log_path='/tmp/a.log'

# 启动程序需要先配置库
LD_PRELOAD=/path/to/libasan.so.x ./yourapp

注意

如果需要检测库是否有问题,被引用的库也需要开启asan功能来编译;

即:需要检测哪个模块,就需要按编译过程跑一遍流程,这样函数就会被处理过;

相关推荐
阿猿收手吧!11 分钟前
【C++】实现自旋锁:三种高效实现与实战指南
服务器·网络·c++
Jia ming12 分钟前
Linux内存管理三层次解密
linux·运维·服务器
小白电脑技术14 分钟前
Lucky中CorazaWAF的OWASP核心规则集功能
服务器·网络·安全
Mr_Xuhhh16 分钟前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
yqcoder28 分钟前
uni-app 之 设置 tabBar
运维·服务器·uni-app
宴之敖者、31 分钟前
Linux——git和gdb
linux·运维·git
码刘的极客手记33 分钟前
vSphere 4.1 隐藏技术全解析:esxcli API 调用、Kickstart 部署优化及 DCUI 界面定制
服务器·网络·esxi·vmware·虚拟机
TangDuoduo000541 分钟前
【Linux字符设备驱动】
linux·驱动开发
代码游侠42 分钟前
学习笔记——Linux内核与嵌入式开发2
linux·运维·arm开发·嵌入式硬件·学习·架构
郝学胜-神的一滴1 小时前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生