当前位置: 首页 > news >正文

南宁百度网站公司在线商城

南宁百度网站公司,在线商城,综合门户网站源码,有微信公众号怎么做微网站简介 谷歌有一系列Sanitizer工具,可用于排查程序中内存相关的问题。常用的Sanitizer工具包括: Address Sanitizer(ASan):用于检测内存使用错误。Leak Sanitizer(LSan):用于检测内存…

简介

谷歌有一系列Sanitizer工具,可用于排查程序中内存相关的问题。常用的Sanitizer工具包括:

  1. Address Sanitizer(ASan):用于检测内存使用错误。
  2. Leak Sanitizer(LSan):用于检测内存泄漏。
  3. Thread Sanitizer(TSan):用于检测多线程间的数据竞争和死锁。
  4. Memory Sanitizer(MSan):用于检测使用未初始化内存的行为。
    本文重点介绍ASan工具的使用。

ASAN工具作用

ASan工具可以检测出程序不可理使用内存的行为,主要包括:

注:ASan内部包含LSan,故ASan也可以用来检测内存泄漏相关问题。

ASAN工具原理

  1. 在编译时,ASan会替换malloc/free接口;
  2. 在程序申请内存时,ASan会额外分配一部分内存(影子内存)来标识改内存的状态;
  3. 在程序使用内存时,ASan会额外进行判断,确认该内存是否可以被访问,并在访问异常时给出错误信息。

ASAN工具安装

ASan已经集成在GCC 4.8中,但GCC 4.9及以上版本才支持 Address Sanitizer 的所有功能。
在这里插入图片描述
可知,当前GCC版本已支持ASan,故无须再安装。

ASAN工具使用

GCC编译选项

-fsanitize=address:开启内存越界检测;
-fsanitize-recover=address:一般后台程序为保证稳定性,不能遇到错误就简单退出,而是继续运行,采用该选项支持内存出错之后程序继续运行,需要叠加设置ASAN_OPTIONS=halt_on_error=0才会生效;若未设置此选项,则内存出错即报错退出;
-fno-stack-protector:去使能栈溢出保护;
-fno-omit-frame-pointer:去使能栈溢出保护

ASAN调试示例

测试示例一

测试程序

  1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 5 void func(void)6 {7         char* str = NULL;8         memcpy(str, "test", sizeof("test"));9 }10 11 int main(void)12 {13         printf("hello world!\n");14 15         func();16 17         return 0;18 }

按如下方式编译,并执行测试

lx@lx-virtual-machine:~/asan$ gcc main.c -fsanitize=address -fsanitize-recover=address -fno-stack-protector -fno-omit-frame-pointer
lx@lx-virtual-machine:~/asan$ 
lx@lx-virtual-machine:~/asan$ ./a.out 
hello world!
ASAN:DEADLYSIGNAL
=================================================================
==6880==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000001 (pc 0x7fd7df251255 bp 0x7ffc24aea420 sp 0x7ffc24ae9b88 T0)
==6880==The signal is caused by a WRITE memory access.
==6880==Hint: address points to the zero page.#0 0x7fd7df251254  (/lib/x86_64-linux-gnu/libc.so.6+0xbb254)#1 0x7fd7df6006ce  (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x796ce)#2 0x5637740ca9b1 in func (/home/lx/asan/a.out+0x9b1)#3 0x5637740ca9c9 in main (/home/lx/asan/a.out+0x9c9)#4 0x7fd7df1b7c86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)#5 0x5637740ca8a9 in _start (/home/lx/asan/a.out+0x8a9)AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/lib/x86_64-linux-gnu/libc.so.6+0xbb254) 
==6880==ABORTING

在这里插入图片描述
可知,测试结果符合分析预期。

参考

https://blog.csdn.net/qq_15437629/article/details/114440930

http://www.yayakq.cn/news/661516/

相关文章:

  • 洪洞网站建设安徽通皖建设工程有限公司网站
  • 做家装的网站好如何做推广最有效果
  • 织梦网站更改如何做 网站映射
  • 12380网站建设总结网站备案网站要有内容吗
  • 合肥建设银行网站微商引流被加方法精准客源
  • 广州服装网站建设苏州网站开发公司兴田德润简介
  • 网站建设平台简介景安网站备案 不去拍照
  • 华北建设集团有限公司oa网站网站site的收录数量要多远索引量
  • 长沙臻钬建站活动方案郑州做招商的网站
  • 网站开发vue版本是什么上海做高端网站建
  • wordpress 导航网站主题内容营销的方法
  • 网站网页文案怎么写延安免费做网站
  • 写手机版网站的静态页面门户网站的营销特点
  • 网站原型设计规范官网建站合作模版
  • 网站开发技术知识wordpress仿小米主题
  • 大连网站建设选高合科技如何分析网站竞争对手
  • 如何制作网站板块网站被k
  • c2c电商网站有哪些京津冀协同发展9周年
  • 语文建设网站成立一个网站需要多少钱
  • 电子商务网站建设购物车有网站加金币的做弊器吗
  • 汕头网站推广优化邵阳找工作网站
  • 如何建设网站咨询跳转页面wordpress模板汉化教程视频
  • 好的网站标准个人小程序怎么申请注册
  • 智慧团建网站网址聊城网站建设lckjxx
  • 合作客户北京网站建设建设一个官方网站的费用
  • 网站从域名动漫制作专业就业
  • 单页网站是什么样子的360浏览器免费网站
  • 宁波公司网站建设最新招总代理项目
  • dede小说网站模板下载网站改版的前端流程
  • 网站标题是什么产品网站怎样做外部链接