在Windows系统中配置Google AddressSanitizer

Google AddressSanitizer简介

AddressSanitizer (ASan) 是 C 和 C++ 的内存错误检测软件,它可以检测:

  • 释放指针后继续使用
  • 堆缓冲区溢出
  • 栈缓冲区溢出
  • 全局缓冲区溢出
  • 返回后继续使用
  • 在范围之外继续使用
  • 初始化顺序的bug
  • 内存泄漏

在 Windows 系统中,可以在 LLVM 和 MSVC 中进行使用。

Visual Studio 2019的配置

先上两个链接:

https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/

https://devblogs.microsoft.com/cppblog/asan-for-windows-x64-and-debug-build-support/#16-9-preview-3-and-later

根据这两个链接进行安装配置应该问题不大,Visual Studio 16.9 Preview 3及其以后的版本不需要额外手动配置链接库,建议安装这个版本之后的软件,能省点事情,这样就只需要配置一下项目的属性即可,下面是简单的配置及测试结果。

VS2019.png

AddressSaniziter.png

CLion中的配置

先放个CLion的官方教程链接。

配置ToolChains

CLion 中的配置稍微复杂一点,首先配置CLion的工具链,添加一个新的 Visual Studio的配置,正常情况下添加配置的时候会自动识别,但是我的社区版VS2019在CLion 2020.3这个版本下是无法自动识别的。我尝试过手动指定环境也没有识别,几经折腾后我放弃了,转头就安装了个企业版😂。这下还是无法自动识别,但是手动指定环境后就识别了,Architecture根据需要设定即可,Platform建议默认,Version根据需要设定即可,编译器直接使用自动检测的配置即可,如果安装了 Clang的编译器也可以手动指定为Clang的编译器,不过在后面配置CMakeLists.txt的时候需要更改链接库的路径为Clang对应的目录。

CLion_VS2019.png

配置CMake选项

CLion_VS2019_02.png

编写CMakeLists.txt

这个CMakeLists.txt文件会遍历所在目录下的所有 .cpp 源文件,每个源文件创建一个单独的可执行项目

cmake_minimum_required(VERSION 3.17)
project(LeetCode VERSION 1.0.0 LANGUAGES CXX)# Retrieve all cpp file in the current cmake source directory
file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)# debug message
function(debug_message MESSAGE)message("==============================")message(${MESSAGE})message("==============================")
endfunction()if (CMAKE_BUILD_TYPE STREQUAL "Debug")set(BuildType "dbg_")
endif ()# add all to executable target
foreach (SRC IN LISTS SOURCES)string(REGEX REPLACE "(^.+)\\.(.+$)" \\1 TMP_SRC ${SRC})string(REPLACE " " "_" TARGET_NAME ${TMP_SRC})add_executable(${TARGET_NAME} ${SRC})target_include_directories(${TARGET_NAME} PRIVATE include)if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")target_compile_options(${TARGET_NAME} PRIVATE -fsanitize=address)# set link directoriestarget_link_directories(${TARGET_NAME} PRIVATE"D:/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29333/lib/x64/")target_link_libraries(${TARGET_NAME} PRIVATEclang_rt.asan_${BuildType}dynamic-x86_64clang_rt.asan_${BuildType}dynamic_runtime_thunk-x86_64)target_link_options(${TARGET_NAME} PRIVATE/wholearchive:clang_rt.asan_${BuildType}dynamic_runtime_thunk-x86_64.lib)endif ()
endforeach ()

测试

运行的时候可能会失败,把缺失的动态库拷贝到可执行文件目录下即可,不想拷贝就在环境变量里面添加与Visual Studio工具链匹配的路径也可。例如,我上面工具链设置的是amd64,CLion自动检测到的编译器是“D:\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe”,这时候把“D:\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\”这个路径添加到环境变量中重启CLion即可正常运行。

CLion_VS2019_03.png
本博文地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【剑指offer】——求出一个正整数的质数因子(Python)

目录 一、题目描述 二、思路 1、短除法 2、平方根法 一、题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) 最后一个数后面也要有空格 输入描述…

Python字符串笔录

python字符串操作实方法,包括了几乎所有常用的python字符串操作,如字符串的替换、删除、截取、复制、连接、比较、查找、分割等 1、去空格及特殊符号 >>> s 123 >>> s.strip() # 去除所有空格123 >>> s1 123 >>&…

第九周进度条

第六周学习进度条 星期一 星期二 星期三 星期四 星期五 星期六 星期日 所花时间 (包括上课) 无 上午8:00-9:50 无 无 下午4:00-5:00 下午3:00-5:30 代码量(行) 0行 260行 0行 0行 0行 0…

C++ STL实现的优先队列( priority_queue )

本文参考的源码版本:gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)。 priority_queue 本质是容器适配器,它对内部容器的元素有自己的管理方式,而 priority_queue 实际维护的是一个二叉堆。STL中 priority_queue 的…

【Python函数】——sort,sorted

1、sorted和sort的常规使用 2、关于自定义比较函数 3、试验 from functools import cmp_to_key ll [(2,3,10),(1,2,3),(5,6,7),(2,5,10),(2,4,10)]# 根据一个维度进行排序,这里根据第一维排序 ll1 sorted(ll,key lambda x:x[0]) print(根据一个维度进行排序&a…

生成相关矩阵

U是X(差异矩阵)各列向量取方向后形成的矩阵,CU^T * U 即相关矩阵,即各列向量两两的夹角,(夹角越小说明关联度越高) clc avg_e66;avg_m66;avg_s76; x1[61 63 78 65 63] -avg_e; x2[53 73 61 84 5…

Java关于Properties用法的总结(一)

最近项目中有一个这样的需求,要做一个定时任务功能,定时备份数据库的操表,将表数据写入txt文件。因为文件的读写路径可能需要随时改动,所以写死或者写成静态变量都不方便,就考虑使用配置文件,这里总结些配置…

【tensorflow】——tensorboard可视化计算图以及参数曲线图loss图

参考文献: https://zhuanlan.zhihu.com/p/71328244 目录 1.可视化计算图 2.可视化参数 3. 远程tensorboard 4、报错 真是出来混迟早是要还的,之前一直拒绝学习Tensorboard,因为实在是有替代方案,直到发现到了不得不用的地步…

Lab01:Xv6 and Unix utilities

实验测试方法 实验的测试方法主要有2个: 进入到Xv6系统中,执行相应的命令使用实验提供的评分测试 对于单个实验,可以使用 make GRADEFLAGSapplication grade其中application为要测试的实验应用,例如sleep实验对应的评分测试命令…

jQuery学习- 位置选择器

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>位置选择器</title><script src"js/jquery.js"></script><script type"text/javascript">$(function(){//获取第一个li$(&quo…

数据类型之元组

存多个值&#xff0c;对比列表来说&#xff0c;元组不可变&#xff08;是可以当做字典的key的&#xff09;&#xff0c;主要是用来读 与列表类型比&#xff0c;只不过[]换成()age(11,22,33,44,55) #本质agetuple((11,22,33,44,55)) print(type(age)) age[0]12 t(1,2,[a,b]) pri…

cocos2d-x3.6 连连看连通画线

我的博客&#xff1a;http://blog.csdn.net/dawn_moon 网上看到非常多人写的连连看&#xff0c;都没有画连线的实现。事实上要话连线挺简单的。cocos2d-x 提供了一个非常方便的绘图形的类。DrawNode。这个类封装了非常多画线条&#xff0c;多边形的方法。非常方便&#xff0c;非…

阿里云大数据计算服务MaxCompute(上篇)

关于阿里云大数据计算服务MaxCompute的详细内容&#xff1a; 阿里云大数据计算服务MaxCompute使用教程 &#xff08;MaxCompute&#xff08;原ODPS&#xff09;是一项大数据计算服务&#xff0c;它能提供快速、完全托管的PB级数据仓库解决方案&#xff0c;使您可以经济并高效的…

Vue3、TypeScript 实现图片数量及大小随宽度自适应调整

前言 过了这么久&#xff0c;想起自己还有个博客&#xff0c;更点内容吧&#xff01; 来&#xff0c;上需求&#xff01; 最近在做个前端界面&#xff0c;要求在一行中展示一些图片&#xff0c;展示的图片数量随着窗口宽度大小进行变化&#xff0c;除此之外还有以下要求&…

【tensorFlow】——图像数据增强、读取图像、保存图像

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/4/13 10:54 # @Author : @linlianqin # @Site : # @File : 数据增强(distorted).py # @Software: PyCharm # @description:一些基于TensorFlow的数据处理方法import tensorflow as tf import cv2 im…

数据分析方法有哪些_数据分析方法

数据分析方法有哪些_数据分析方法 随着大数据的到来&#xff0c;数据分析师成为大数据时代一颗冉冉升起的新星&#xff0c;现在企业越来越重视大数据&#xff0c;数据分析师这个职业也成为企业争抢的对象。那么数据分析师的分析数据的方法都有哪些呢&#xff1f; 1、数据分析遵…

苹果Iphone/Ipad--L2T虚拟教程

1 Iphone和Ipad同为IOS&#xff0c;设置方法相同。首先进入IOS系统的“设置”程序。 2 点击“通用”进入通用设置&#xff0c;点击“”; 3 选择"添加设置 "&#xff1b; 4 选择L2TP方式&#xff0c;填写必要信息&#xff1a;描述、服务器地址 、您注册充值的账号及密…

记忆化搜索的应用

记忆化搜索的应用 一般来说&#xff0c;动态规划总要遍历所有的状态&#xff0c;而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝&#xff0c;可能剪去大量不必要的状态&#xff0c;因此在空间开销上往往比动态规划要低很多。 如何协调好动态规划的高效率与高消费之间的…

【深度学习】——DNN后向传播、CNN后向传播文章汇总

深度神经网络&#xff08;DNN&#xff09;模型与前向传播算法 深度神经网络&#xff08;DNN&#xff09;反向传播算法(BP) 卷积神经网络CNN的前向和后向传播&#xff08;一&#xff09; 卷积神经网络CNN的前向和后向传播&#xff08;二&#xff09; 有batch normalization的卷积…