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

济南知名网站建设平台学做网站需要多少钱

济南知名网站建设平台,学做网站需要多少钱,themegallery模板网,wordpress点击显示微信二维码文章目录 一、Valgrind 介绍二、Valgrind 功能和使用1. 主要功能2. 基本用法2.1 常用选项2.2 内存泄漏检测2.3 详细报告2.4 性能分析2.5 多线程错误检测 三、在 Ubuntu 上安装 Valgrind四、示例1. 检测内存泄漏2. 使用未初始化的内存3. 内存读写越界4. 综合错误 五、工具集1. M…

文章目录

  • 一、Valgrind 介绍
  • 二、Valgrind 功能和使用
    • 1. 主要功能
    • 2. 基本用法
      • 2.1 常用选项
      • 2.2 内存泄漏检测
      • 2.3 详细报告
      • 2.4 性能分析
      • 2.5 多线程错误检测
  • 三、在 Ubuntu 上安装 Valgrind
  • 四、示例
    • 1. 检测内存泄漏
    • 2. 使用未初始化的内存
    • 3. 内存读写越界
    • 4. 综合错误
  • 五、工具集
    • 1. Memcheck
    • 2. Callgrind
    • 3. Cachegrind
    • 4. Helgrind
    • 5. Massif

一、Valgrind 介绍

Valgrind是一套开放源代码(GPL V2)的仿真调试工具集合,由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件(plug-in),利用内核提供的服务完成各种特定的内存调试任务。

Valgrind 是一个强大的内存调试和性能分析工具,广泛用于 Linux 系统上的程序开发和测试。它可以帮助开发者检测内存泄漏、数组越界、未初始化变量等问题,并提供详细的报告。Valgrind 支持多种编程语言,尤其是 C 和 C++。

Valgrind可以帮助开发者检测和修复程序中的内存问题和性能瓶颈。通过合理使用 Valgrind 的各种工具和选项,可以显著提高程序的质量和性能。

二、Valgrind 功能和使用

1. 主要功能

valgrind 主要功能包括:

  1. 内存泄漏检测:检测程序中未释放的内存分配。
  2. 数组越界检测:检测数组访问越界的情况。
  3. 未初始化变量检测:检测使用未初始化的变量。
  4. 多线程错误检测:检测线程同步问题,如数据竞争。
  5. 性能分析:提供详细的性能分析报告,帮助优化程序。

2. 基本用法

Valgrind 的基本用法是:

valgrind [valgrind-options] ./your-program [program-options]

其中,[valgrind-options]表示Valgrind的选项。

2.1 常用选项

  1. –tool=tool_name:指定要使用的Valgrind工具,如Memcheck、Callgrind等。
  2. –leak-check=full:在程序退出时检查内存泄漏,并显示所有的内存泄漏信息。
  3. –track-origins=yes:跟踪未初始化变量的来源。
  4. –log-file=<文件>:将Valgrind输出的信息保存至文件中。

2.2 内存泄漏检测

valgrind --leak-check=yes ./your-program

2.3 详细报告

valgrind --leak-check=full --show-leak-kinds=all ./your-program

2.4 性能分析

valgrind --tool=callgrind ./your-program

2.5 多线程错误检测

valgrind --tool=helgrind ./your-program

三、在 Ubuntu 上安装 Valgrind

打开虚拟机,执行以下命令安装 valgrind:

sudo apt-get install valgrind

在这里插入图片描述

四、示例

1. 检测内存泄漏

内存泄漏源码示例:
memleak.c

#include <stdlib.h>
#include <stdio.h>
int main(void)
{char *ptr;ptr = (char *)malloc(10);return 0;
}

编译程序,然后用valgrind检测,可以知道在程序退出时还有多少内存没释放。

gcc -g -o memleak memleak.c
valgrind --tool=memcheck ./memleak

在这里插入图片描述

可以看到,如果我们仅仅用默认方式执行,valgrind只报告内存泄漏,但没有显示具体代码中泄漏的地方。

因此我们需要使用 “–leak-check=full”选项启动 valgrind,我们再执行一次:

valgrind --leak-check=full ./memleak

在这里插入图片描述
和上次的执行结果基本相同,只是指明了代码中出现泄漏的具体位置。

2. 使用未初始化的内存

代码示例:

#include <stdio.h>                                                              
int main()
{int x;if(x == 0){printf("X is zero");}return 0;
}

编译程序,然后用valgrind检测:

gcc -g -o test test.c
valgrind --tool=memcheck  ./test 

在这里插入图片描述

3. 内存读写越界

代码示例:

#include <stdlib.h>
#include <stdio.h>
int main(int argc,char *argv[])
{int len=5;int i;int *pt=(int*)malloc(len*sizeof(int));int *p=pt;for(i = 0; i < len; i++){p++;}*p=5;printf("%d",*p);return 0;
}

在 for 循环中,p 是一个指向动态分配数组的指针。每次循环,p 都会递增。循环结束后,p 指向了动态分配数组的最后一个元素的下一个位置。此时,p 已经越界,指向了不属于分配内存的区域。
所以试图通过 p 解引用并赋值,但由于 p 已经越界,这会导致未定义行为(Undefined Behavior, UB)。程序可能会崩溃,或者导致其他不可预测的行为。

编译程序,然后用valgrind检测:

gcc -g -o test test.c
valgrind --tool=memcheck  ./test 

在这里插入图片描述

4. 综合错误

代码示例:包括堆中的内存越界、踩内存、栈中的内存越界、非法指针。

#include <stdlib.h>
#include <stdio.h>
int main(void)
{char *ptr = malloc(10);ptr[12] = 'a'; // 内存越界memcpy(ptr + 1, ptr, 5); // 踩内存char a[10];a[12] = 'i'; // 数组越界free(ptr); // 重复释放free(ptr);char *p1;*p1 = '1'; // 非法指针return 0;
}

编译程序,然后用valgrind检测:

gcc -g -o test test.c
valgrind --tool=memcheck  ./test 

在这里插入图片描述
在这里插入图片描述

五、工具集

Valgrind工具集中包含了多个实用的工具,每个工具都有其特定的功能。

1. Memcheck

内存错误检测器,能够发现开发中绝大多数内存错误使用情况,比如使用未初始化的内存、使用已经释放了的内存、内存访问越界等。它还可以分析热点函数和函数调用流程,帮助优化程序性能。

2. Callgrind

用于分析程序的函数调用关系,收集程序运行时的一些数据,建立函数调用关系图。它还可以有选择地进行cache模拟,并在运行结束时将分析数据写入一个文件。

3. Cachegrind

分析程序的缓存使用情况和缓存命中率,通过模拟处理器缓存的访问情况来统计程序的缓存行使用情况、缓存命中率和缓存失效次数等信息。

4. Helgrind

线程错误检测器,用于检查多线程程序中出现的竞争问题。它寻找内存中被多个线程访问而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,容易导致难以发现的错误。

5. Massif

堆栈分析器,主要用来检查程序中堆栈使用中出现的问题。它能测量程序在堆栈中使用了多少内存,帮助开发者了解块寿命、块利用率和布局效率低下的问题。

此外,Valgrind还提供了其他工具,如DHAT(用于检测堆内存分配和使用情况)等,以满足不同开发者的需求。


文章转载自:

http://pY5gGOAb.tmrjb.cn
http://J4x83pve.tmrjb.cn
http://ucILJ0JA.tmrjb.cn
http://9kveeLS9.tmrjb.cn
http://lKYAjIGS.tmrjb.cn
http://GacmsXmi.tmrjb.cn
http://WNco3GN1.tmrjb.cn
http://v4xjFlaO.tmrjb.cn
http://yT6EPAQ9.tmrjb.cn
http://bn71cZ8v.tmrjb.cn
http://5O2eDnpv.tmrjb.cn
http://Gr95apCY.tmrjb.cn
http://UEVZDPFx.tmrjb.cn
http://ng7ixVoQ.tmrjb.cn
http://E7IXzKi0.tmrjb.cn
http://1pXVQLm8.tmrjb.cn
http://SykEW6wd.tmrjb.cn
http://HSBrPhJ2.tmrjb.cn
http://um6mwSe5.tmrjb.cn
http://PYbxLuFv.tmrjb.cn
http://Wh0vdNCz.tmrjb.cn
http://j7fih6NA.tmrjb.cn
http://YYxrLygC.tmrjb.cn
http://EZmAg8aa.tmrjb.cn
http://J86uL5Iu.tmrjb.cn
http://jRAJp6Ta.tmrjb.cn
http://Vd57x1dI.tmrjb.cn
http://vbs87G0M.tmrjb.cn
http://qxjcLH9s.tmrjb.cn
http://3KjIfxbP.tmrjb.cn
http://www.dtcms.com/wzjs/651913.html

相关文章:

  • 网站挂广告电子商务网站建设详细策划书
  • 网站改版后 存在大量404页面建设安全监督网
  • 成都哪家网站建设好.php的网站是怎么做的
  • 公司部门网站设计模板下载网页qq登录电脑版
  • 河南省建设厅陈华平官方网站软件开发公司网站模板
  • 企腾做的网站怎么样如何设置网站会员
  • 网站建设和维护视频深圳网站设计张兵
  • 网站设计与建设的参考文献网站导航自适应
  • 百度推广怎么做网站的优化百度产品优化排名软件
  • 上海seo网站优化_搜索引擎排名_优化型企业网站建设_锦鱼网络黑龙江省建设协会网站
  • 什么是网站开发公司电话速成建站
  • 赣州企业网站建设公司备用网站域名
  • 建设租车网站wordpress 卡
  • 做二手房的网站技巧如何自己写一个网页
  • 深圳专业专业网站建设公司都安网站建设
  • 网站注册登录页面设计什么网站上做效果图可以赚钱
  • 网站建设与案例管理的心得体会图书馆网站开发总结
  • 那些网站主做玄幻小说深圳市住房保障局官网
  • iis 建网站手机访问宁波网站建设开发公司
  • 网站软件大全免费下自己建设网站怎么被百度收入
  • 做网站需要解析吗廊坊建设部网站
  • 优秀网站建设官网珠海一元夺宝网站建设
  • 网站建设必须经历的过程网络营销方案设计题
  • 一站式网站建设哪家专业金华市建设技工学校网站
  • 济宁网站建设优化亿峰深圳龙华高级中学
  • 如何查看一个网站的所有二级域名集约化网站建设方案
  • wordpress制作网站教程百度排名推广
  • 公司网站属于什么类型域名买好后怎么建设网站
  • 建站之星切换模板长沙建站优化
  • 苏州艺术家网站建设新产品宣传推广策划方案