valgrind---memcheck工具命令选项

2024-02-06 12:48

本文主要是介绍valgrind---memcheck工具命令选项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       转载地址:http://blog.csdn.net/strategycn/article/details/7865525



--leak-check=<no|summary|yes|full>:如果设为yes或full,在被调程序结束后,valgrind会详细叙述每一个内存泄露情况,默认是summary,只报道发生了几次内存泄露。

--show-possibly-lost=<yes|no>:默认是yes。若设为no,则内存泄露检查将不显示那些“possibly lost”块。

--leak-resolution=<low|med|high>:这个选项设定内存检查工具在检测出多个内存泄露时,如何将这些内存泄露归结为同一个泄露(合并那些由相同原因引起的)。设为low时,试图合并前两个泄露情况,设为med,则是前四个,默认是high,试图合并所有的泄露情况。这个选项不影响memcheck找泄露的能力,只是影响它的检测结果显示。

--show-reachable=<yes|no>:默认情况是no,即内存泄露检测工具只显示"definitely lost"和“possibly lost”块,若启动的话(yes),还会显示“reachable”和“indirectly lost”块,也就是说,除了被suppressed的那些,可能泄露的块都会被显示出来,其实这个选项的名字改为--show-all更合适。

--undef-value-errors=<yes|no>:默认是yes,即memcheck会报道引用未定义错误(uses of undefined value errors),这对检测速度有点影响。

--track-origins=<yes|no>:这个选项控制memcheck是否追踪对未初始化值引用错误的根源。默认情况是不追踪,即它会告诉你程序引用了一个未初始化的值,但不知这个未初始化的值来自何处。若设为yes,memcheck将会追踪到未初始化的源。这个源可能出现在如下四种情况:堆上的、栈上的、clent requist、其他的。对于来自堆块上的未初始化值,memcheck会显示这个块是在哪分配的。对于栈上的未初始化值,memcheck会告诉你是哪个函数干的。这个选项的开销是相当大的。该选项不能与--undef-value-errors=no连用。

--partial-loads-ok=<yes|no>:这个选项决定memcheck如何处理word-sized和word-aligned数据(来自addresses)的加载情况,addresses处的一些字节块的地址是可重分配地址的,其余的不可。若设为yes,这种加载不会产生任何错误,当从非法地址处加载字节时会被标记为uninitialised,从合法地址加载的则按正常方式处理。默认是no,即将从部分无效的地址处的加载与从完全无效地址处的加载作同等处理,非法地址错误会被报道出来,相应的字节块被标记为initialised。其实这样的代码是不符ISO C/C++标准的,它应该被视为broken,不管如何,应该修正这样的代码,这个选项应该被作为最后的手段。

--freelist-vol=<number>:当客户程序用free或delete释放一个内存块时,这个内存块不会立即可用于再分配,它只会被放在一个freed blocks的队列中(freelist)并被标记为不可访问,这是为了尽可能延迟被释放的块再次被循环利用的(时间?)点,这样有利于探测到在一段很重要的时间后,客户程序又对被释放的块进行访问的错误。这个选项规定了队列所占的字节块大小,默认是20MB。增大这个选项的会增大memcheck的内存开销,但查错的能力也会提升。

--freelist-big-blocks=<number>:当从freelist队列中取可用内存块用于再分配时,memcheck将会从那些比number大的内存块中按优先级取出一个块出来用。这个选项就防止了freelist中那些小的内存块的频繁调用,这个选项提高了 查到针对小内存块的野指针错误的几率。若这个选项设为0,则所有的块将按先进先出的原则用于再分配。默认是1M。

--workaround-gcc296-bugs=<yes|no>:若开启这个选项,则当对栈顶指针下不远处进行读写时不会报错(gcc2.96的bug),这个不远距离默认是256B,默认是no。尽量不要开启这个选项,因为它真有可能造成错误而又不易被察觉,解决方法是用最新的GCC,它会修正这个错误。在老一点的GCC版本上,可能要用到这个选项。

--ignore-ranges=0xPP-0xQQ[,0xRR-0xSS]:这些区间之间的地址,在memcheck的寻址检查时将被省略,可以有多个地址区间,逗号隔开。(字母要被数字代替)

--malloc-fill=<hexnumber>:对用malloc和new分配出的内存块,用hexnumber对其进行初始化填充,但calloc分配的则不用。这个选项可能对那些不易察觉的memory corruption问题有用(就是你分配了大量的内存,都被hexnumber填充的话,说明你也没用这个内存块)。被分配的内存块仍被标记为undefined,它只影响里面的内容。

--free-fill=<hexnumber>:当用free和new释放一个内存块是,用hexnumber对内存块进行填充。它的好处与--malloc-fill的相同,被填充的内存仍不能被访问,它只影响它里面的内容。




这篇关于valgrind---memcheck工具命令选项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684358

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll