vs2019 C++自带了内存问题检测工具:AddressSanitizer(ASan)
之前做服务器时,一般是linux下的C++,
C++容易出很多内存问题:内存泄漏、内存越界、野指针 空指针之类的问题。
linux下 运行时检测工具,有 valgrind,正常编译debug版,然后附加运行就行了, 就是大程序会有比较卡; 也有 AddressSanitizer(ASan) , 编译后直接运行检测。
最近接触一个windows的C++项目, 之前一直苦于没好用的内存检测工具。 最近再查资料发现,VS2019 新的版本,已经带有 AddressSanitizer(ASan) , 虽然还是在测试阶段。
尝试用了一下,还可以。
1、需要安装一下这个工具:
2、项目的属性里, 开启“启用地址擦除系统”:
如果编译报错,根据错误信息调整一下。(比如之前 Debug 不支持 /ZI , 不过我升级V16.11.xx之后 就没提醒,但是 遇到内存越界不会报错了,所以一定要改成/Zi)
3、然后运行exe就行了,如果代码有内存问题,会报错。 不过直接运行exe,若检测到读越界、写越界, 程序都会闪退,常看不到信息。
处理方案:
一个就是 vs直接调试运行,
一个就是 环境变量里加上 ASAN_OPTIONS halt_on_error=0:log_path=asan.log
或者 运行的命令行里执行:set ASAN_OPTIONS=halt_on_error=0:log_path=asan.log
出现问题时,会在 当前exe目录下生成 asan.log.xxxx (文件名自己定的,后面的数字应该是进程号)
遇到的问题:
(1) 这版项目,Debug 版本引用的几个自己编的.DLL 会出Assert
Debug Assertion Failed: _CrtIsValidHeapPointer(block)
自己的解决办法是,把对应dll 也开启 asan 重新编一下。。。
(2) halt_on_error=0 参数好像作用不大, 程序还是一检测就闪退,我再研究研究。
其他可以找网上的资料, 看看报错了之后如何定位问题
VS2019中使用AddressSanitizer检测内存问题 - 简书
比如它能比较好的定位到 野指针问题。
某某行代码 访问xxx内存 有问题
这个内存在哪行代码释放掉了
这个内存是在那行代码分配的之类的。
再好好看看自己的代码,大部分能定位出问题来。 (不过还是有些报错很难定位 - -!)
官方一些资料:
AddressSanitizer 已知问题 | Microsoft Docs
vs2019 C++自带了内存问题检测工具:AddressSanitizer(ASan)相关推荐
- 内存错误检测工具AddressSanitizer原理
原论文:AddressSanitizer: A Fast Address Sanity Checker 谷歌官方文档:AddressSanitizerAlgorithm 参考博客:Introducti ...
- iOS开发之内存泄漏检测工具-Leaks
引言 我们在实际开发过程中,经常会不小心造成循环引用问题,从而造成内存泄漏问题,那么我们该如何检测我们工程那个位置存在内存泄漏问题呢?这就需要用到Xcode自带的内存泄漏检测工具-Leaks. 内存泄 ...
- win10系统自带的计算机无法使用吗,Win10如何使用系统自带的硬件设备检测工具?...
Win10如何使用系统自带的硬件设备检测工具?在Win10操作系统中,自带有硬件设备检测工具,当我们遇到电脑故障时,可以使用这些检测工具来处理故障.下面小编就来教大家使用电脑自带的硬件设备检测工具! ...
- Android内存泄漏检测工具使用手册
Android内存泄漏检测工具使用手册 前言 LeakCanary 在Android中接入LeakCanary LeakCanary内存泄漏分析 内存泄漏上报到服务端 Shark Shark分析当前应 ...
- 计算机自带的配置检测,Windows10系统自带电脑硬件设备检测工具的使用步骤
windows10系统在使用过程中,有时候会遇到一些系统故障,那么我们可以使用自带的电脑硬件设备检测工具来进行处理,但是很多用户不知道Windows10系统自带电脑硬件设备检测工具如何使用,本文就给大 ...
- 计算机自带的配置检测,Win10如何使用系统自带的硬件设备检测工具?
Win10如何使用系统自带的硬件设备检测工具?在Win10操作系统中,自带有硬件设备检测工具,当我们遇到电脑故障时,可以使用这些检测工具来处理故障.下面小编就来教大家使用电脑自带的硬件设备检测工具! ...
- Linux中的常用内存问题检测工具
原文地址:http://blog.csdn.net/jinzhuojun/article/details/46659155 C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种 ...
- 几种内存泄露检测工具的比较
概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却 ...
- 内存问题检测工具的介绍
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.但是,在这样灵活操作的后面,还隐藏着很危险的操作,那就是关于内存的问题.一看到内存的问题,大部分的初学者就开始傻 ...
最新文章
- PHP 捕获全局异常
- 在伦敦工作生活—随笔-1
- 图像缩放算法_技术专栏|基于无人机LK光流算法的适用性及其优化方法探究
- centos7输入systemctl status network.service出现Unit network.service could not be found的解决办法
- java登录界面命令_Java命令行界面(第19部分):jClap
- 如何自己塑封_全球市场三足鼎立,国内半导体封测业如何实现可持续发展?
- java list 排序_java 对list进行排序
- python集合运算_python set集合的基本运算
- 【交换机在江湖】第十四章 VLAN通信篇
- Keil uVision4 C51完整版
- 处理24人!又一批科研不端案例被通报批评
- Ubuntu安装后初次配置
- 将Flutter添加到现有应用——过程中遇到的问题
- mac 不显示 外接屏幕_Mac连接投影仪 Mac外接显示器设置教程
- 借助云开发实现小程序朋友圈的发布与展示
- 使用Java设计简单的画图工具
- VPP-引流到自己节点的方法
- YUV RGB格式分析,以及对应码率(带宽)计算
- rdesktop远程使用Windows的一些技巧
- 课上——HTML 表格 学生成绩表
热门文章
- 服务器带宽50M能带动多少人同时在线?
- CSS 设置p标签首字母格式
- python随机抽号器_python 随机抽取数据
- 后台框架--HUI 的学习跟使用1
- STM32基础课程笔记
- 六张卡片来猜数(哈利波特之心灵感应魔法)
- 计算机三维造型 试题,2012上图杯三维建模试题要求
- 重装系统“Windows无法安装到这个磁盘中,选中的磁盘具有MBR分区表”
- 【Computer Graphics】直线方程及相关计算
- virtualbox提示错误 不能为虚拟电脑 centos7 打开一个新任务. Unable to load R3 module C:\Program Files\Oracle\Virtual