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

相关文章

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文