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功能来编译;

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

相关推荐
重生之我在20年代敲代码9 分钟前
【Linux】初始线程
linux·运维·服务器
问道飞鱼20 分钟前
【Linux知识】Linux磁盘开机挂载
linux·运维·网络·磁盘·自动挂载
试试勇气38 分钟前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
小猪写代码1 小时前
服务器:常用文件夹介绍
运维·服务器
jiunian_cn1 小时前
【Linux】高级IO
java·linux·服务器
程曦曦1 小时前
宝塔服务器磁盘爆满:占用50G磁盘空间的.forever日志文件处理导致服务崩溃的教训
运维·服务器·vim
☆璇1 小时前
【Linux】网络基础概念
linux·网络
ICT系统集成阿祥1 小时前
服务器厂商领先的品牌名单
运维·服务器
poemyang2 小时前
“一切皆文件”:揭秘LINUX I/O与虚拟内存的底层设计哲学
linux·rpc·i/o 模式
大聪明-PLUS2 小时前
GPIO 也是一个接口,还有 QEMU GPIODEV 和 GUSE
linux·嵌入式·arm·smarc