VS2019诊断功能

  • vs代码内存/CPU使用率诊断
  • 内存泄漏诊断

vs代码内存/CPU使用率诊断

在代码运行过程中,有时候会出现内存泄漏,内存/CPU占用过高等情况,这些情况的出现十分影响代码的运行效率和鲁棒性,所以有必要对代码进行诊断和优化处理。这边使用VS2019自带的代码诊断工具进行检测。
具体的操作方法是

  1. 先在要诊断的代码部分添加断点或者让程序完整运行起来(最好是能够循环)

  2. 运行代码(这边以绘制三角形为例子,屏幕是不断在刷新的)可以看到内存/CPU的运行状况

  3. 这边以CPU使用率为例子,内存的占用查看也一样。选择一段或者是整段运行过程点击CPU使用率,再点击全部中断即可查看CPU占用情况

  4. CPU占用情况根据饼图可以大致看出,然后再点击外部代码,从外部代码中选出关注的函数查看代码内部所占用的具体情况,根据需要对代码进行优化等操作。

内存泄漏诊断

在堆上分配内存(new或者malloc)但是没有释放(delete或者free)会造成内存泄漏,为了避免忘记释放导致的问题我们可以对代码进行内存诊断,方法和CPU诊断类似,主要的区别是我们需要使用内存使用率这边来查看具体的情况。
这边随便写一串代码,且保证其没有释放(内存泄漏)

//Test.h
#pragma once
#include<iostream>
using namespace std;
class Test
{public:Test();Test(int a, int b);Test(const Test& t);~Test();void func();int m_a, m_b, m_c[100];//需要分配408个字节
};
#include "Test.h"Test::Test()
{cout << "调用无参构造函数" << endl;
}Test::Test(int a, int b)
{m_a = a;m_b = b;cout << "调用构造函数" << endl;
}Test::Test(const Test& t)
{m_a = t.m_a;m_b = t.m_b;cout << "调用拷贝构造" << endl;
}Test::~Test()
{cout << "调用析构函数" << endl;
}void Test::func()
{}
//主函数
#include"Test.h"
void func()
{//delete t;
}
void main()
{for (int i = 0; i < 100; i++){Test* t0 = new Test(1,2);//内存泄漏 100*408}for (int i = 0; i < 1000; i++){Test* t0 = new Test();Test* t1 = new Test();//t1内存泄漏1000*408delete t0;//t0释放了}system("pause");
}

点击内存使用率-》截取快照-》分配差异值-》出现左边1100个泄露的指针,以及泄露的内存1100*408=448800

双击1100进入分配的内存地址

双击地址直接跳入内存泄露的地方,还是相当快捷的。

VS2019CPU/内存诊断功能相关推荐

  1. windows7内存诊断工具有用吗_windows内存诊断工具有什么用

    windows内存诊断工具有什么用 导读:内存可以说是电脑的重灾区,很多电脑问题都跟内存有关.内存稍微有点问题都有可能导致系统运行不稳定,最常见的表现就是蓝屏,自动重启,甚至开不起机.如果是开不起机的 ...

  2. Win10电脑如何进行内存诊断?教程来了

    日常生活中,我们经常使用电脑,这给我们带来了很大的便利性,不管是台式机还是笔记本电脑,其内存是非常重要的.它决定了我们能否正常的使用电脑.在内存出现问题的时候,很多用户都不知道其原因.其实通过自带的内 ...

  3. windows7内存诊断工具有用吗_开机windows内存诊断工具怎么打开_win7开机出现内存诊断工具如何使用...

    2014-11-25 15:07:50 Windows7系统自带有内存诊断工具,如果你是新接触Windows7系统的用户,并不清楚怎样打开内存诊断工具的话,那么请来看看下面雨林木风win7旗舰版系统找 ...

  4. 内存的可靠性、可用性和诊断功能(内存RAS)

    内存的可靠性.可用性和诊断功能(内存RAS) RAS - Reliability, Availability and Serviceability Reliability: 可靠性.指的是系统必须尽可 ...

  5. JVM 常见异常及内存诊断

    栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存. 栈帧过多导致栈内存溢出 下述示例代码,由于递归 ...

  6. Node.js 14 发布,改进了诊断功能

    Node.js 14 版本现已发布.新版本的亮点内容包括有:改进的诊断功能.V8 的升级.实验性的 Async Local Storage API.streams APIs 的强化.实验模块警告的删除 ...

  7. 内存诊断工程搭建及demo测试

    第三章 内存诊断工具 19 3.1mtrace工具 19 3.1.1工具背景 19 3.1.2环境搭建 19 3.1.3demo测试 19 3.2memwatch工具 20 3.2.1工具背景 20 ...

  8. 19.jvm内存结构部分——堆_内存诊断_jmap

    接下来我们给大家介绍一下堆内存的一个诊断. 这里主要先介绍一些堆内存诊断相关的一些工具. 我们接下来会掌握这样几个工具啊, 第一个叫 jps 的工具,它是查看当前系统中有哪些java 进程,并且把它们 ...

  9. windows7内存诊断工具有用吗_Win7怎么使用自带工具进行内存检测?

    电脑使用久了,总是会出现各种各样的问题,其中比较常见的就是内存问题了.出现内存问题,我们可以采用系统自带的工具进行内存检测,可是很多用户不知道Win7怎么使用自带工具进行内存检测,为此小编赶紧整理了以 ...

  10. android+内存清理+代码,最新版本:Android一键式清理,内存清理功能的实现

    Android一键式清理,内存清理功能的实山清理大师等均提供一键式清理和一键加速等功能.实际上,它们杀死了一些后台进程以达到释放内存的目的. 基本思想是列出所有正在运行的进程,检查它们的重要值(Run ...

最新文章

  1. 基因组表达分析:如何选择RNA-seq vs. 芯片
  2. 深入理解l内核v4l2框架之video for linux 2(一)
  3. hdu 3007(最小圆覆盖)
  4. Maven日常 —— 你应该知道的一二三
  5. 麻省理工计算机科学录取条件,2018美国留学:麻省理工学院托福分数最低录取要求...
  6. idea使用 git 撤销commit
  7. C++ 类的行为 | 行为像值的类、行为像指针的类、swap函数处理自赋值
  8. 《面向对象程序设计》课程作业二
  9. PS如何生成svg代码格式的path路径 - PS技巧篇
  10. opencv-api getRotationMatrix2D
  11. 怎么用java打开.jar文件
  12. matlab定义struck,Peter Struck
  13. @linux下tar解压失败a lone zero解决方法
  14. 通过银联跨行转账、转接的交易手续费用——2358原则
  15. Android原生系统开发如何优雅的提供系统级的API供第三方程序调用?
  16. Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion `GDK_IS_DRAWABLE (drawable)‘ failed
  17. input file图片上传(使用OSS Javscrtipt 上传到服务器)以及图片裁剪(cropper.js)
  18. 蓝汛之,关于硬件设计导致的RF干扰GND导致产生的底噪问题【篇】
  19. vue3 引入天地图
  20. c语言微信协议源码,微信强制加入群软件!易语言协议版,公开源码

热门文章

  1. 轩小陌的Python笔记-day03 Python基础
  2. 顶部标题栏的布局设计
  3. java正则判断银行卡号,验证银行卡号正则
  4. Python批量删除微博
  5. android 百度地图api切换城市,【百度地图API】关于如何进行城市切换的三种方式...
  6. 实时网速怎么看快慢_怎么测试下载速度(教你安全检测网速快慢)
  7. 怎么修改网页游戏服务器内容,云服务器怎么设置挂网页游戏
  8. java贪吃蛇课程设计知乎_Java课程设计---贪吃蛇大作战
  9. Web前端密码加密是否有意义?
  10. 重装系统,超详细教程