第17期-使用性能计数器跟踪程序性能
- 2022/6/17 22:28 | 33分钟
- VIP
微软提供轻量级、跨平台、实时的性能指标收集器,可用于识别和诊断各种程序性能问题,将程序性能指标报告保存到指定文件,将性能指标实时推送到侦听器工具,本视频将介绍如何使用性能计数器探测网站请求吞吐量和并发量,使用计数器探测 EF Core 性能。
微软提供轻量级、跨平台、实时的性能指标收集器,可用于识别和诊断各种程序性能问题,将程序性能指标报告保存到指定文件,将性能指标实时推送到侦听器工具,本视频将介绍如何使用性能计数器探测网站请求吞吐量和并发量,使用计数器探测 EF Core 性能。
收集进程正在运行的托管线程,收集每个线程的执行堆栈跟踪信息,将收集结果保存到指定的文件,跨平台线程堆栈跟踪工具安装,查看可被收集的进程,使用命令行收集并分析线程堆栈信息。
收集实时进程的 GC 托管堆垃圾回收器转储快照,从事件流中生成对象根图,使用可视化工具分析托管堆对象占用内存大小,分析对象的引用根,比较多个时间点堆上的对象数,使用命令行分析堆快照,将分析结果输出到文件,使用 PerfView 工具分析程序性能。
使用内存转储收集和分析实用工具,跨平台转储内存快照的方法,分析 SOS 命令,列出正在运行的托管线程,切换线程,托管代码的堆栈跟踪,深入探索 CLR 如何创建运行时对象,内存结构图,使用命令跟踪对象结构信息。
学习内存转储文件,抓取内存快照,在 Visual Studio 中创建转储文件,使用 ProcDump 灵活创建转储文件,在任务管理器中创建转储文件,使用运行诊断分析工具,调试并分析内存泄漏,知道哪些对象占用内存,调试并分析高 CPU 使用率的应用,知道哪些线程或方法占用 CPU 使用率,调试并分析死锁,快速定位死锁位置。
使用 IntelliTrace 跟踪代码执行的历史记录,自动记录应用程序触发的事件,可缩短调试应用程序所用的时间,发现程序潜在的问题,学习诊断工具的使用方法,诊断指定对象占用内存大小,跟踪 CPU 耗时代码,使用快照可进行历史调试,使用独立收集器在其它计算机上收集跟踪文件。
编写多线程示例,通过代码设置线程名称,在源代码中显示线程,在并行堆栈窗口中查看线程位置,并行监视多线程变量的值,标记线程,冻结和解冻线程,使用条件断点筛选器跟踪指定的线程,切换到另一个线程,多项目启动,调试多个进程,一个进程中断时则中断所有进程,进程窗口中切换,分离进程。
理解远程调试原理,下载安装远程调试工具,从 Visual Studio 安装目录运行远程调试器,端口和权限设置,防火墙设置,配置内网穿透,将调试器附加到远程进程,将远程调试工具配置为后台服务,强制使用远程符号,使用调试器控制远程程序的自动启停,推荐一款检查远程端口连接状态的小工具。
理解用户代码和外部代码,知道调试器在何处查找符号文件,启用源服务器支持,调试 .NET 框架源代码,理解源链接调试原理,启用源链接支持动态下载源码,针对无源码的第三方程序集,在调试时可动态反编译生成符号和源代码,在代码中设置调试器中断。
在调试器中查看调用堆栈,显示外部代码的调用堆栈,在代码图上显示调用堆栈,图形化跟踪调用过程,使用堆栈跟踪打印堆栈帧的有序集合,使用编译器提供的特性标记可以获取方法调用方的信息,获取源代码的文件路径、源代码中的行号和调用方的成员名称。
调试程序时可以打开大多数调试器窗口,使用数据提示窗口,可视化复杂数据类型,自动窗口和局部变量,可编辑变量的值,查看返回值,监视和快速监视,使用表达式,刷新监视值,创建对象 ID 编号,反汇编窗口,寄存器窗口,内存窗口,即时窗口。
使用调试器异常管理窗口,你可以告知调试器在遇到哪些异常或异常集合时中断,调试器中断时,会显示引发异常的位置,添加和删除自定义异常,向异常添加条件,通过将模块名称设置为条件,可以选择仅在某些代码模块遇到异常时中断执行。
如何优雅的设置断点,单步跟踪,逐过程调试,跳出方法,在调试中修改代码,条件断点,筛选器,断点操作,临时断点,依赖断点,使用断点窗口管理断点,断点颜色状态,将调试器附加到进程,使用编码在程序中启动调试器。
PDB 文件是编译器生成的辅助文件,符号可用于调试和其它诊断工具,符号是源代码和编译器生成的二进制文件之间的映射,调试符号生成设置,查看调试器中程序集所关联的符号文件,可执行文件 PE 和 COFF 头部结构,使用工具查看 PDB 文件结构,关于 PDF 符号下载工具。
基于 .NET 的应用是针对一个或多个 .NET 实现开发的,每个实现都具有不同的组件,一个或多个运行时 CLR 运行时,基类库,应用程序框架库,一些开发工具,项目与软件开发工具包 SDK 关联,每个项目 SDK 都是一组 MSBuild 目标和相关的任务,它们负责编译、打包和发布代码,使用不同的方式管理引用包。
使用命令行接口 CLI 工具链开发、生成、运行和发布跨平台 .NET 应用程序,创建解决方案,创建项目和类库,将项目添加到解决方案中,向项目中添加包引用,添加项目到项目引用,生成项目及其所有依赖项,单元测试项目,运行项目,监控项目,发布部署项目,打包项目,工作负载管理,让命令行支持智能提示。
理解构建多种应用的开源开发平台,微软 .NET 平台开源仓库,如何优雅的安装 .NET 平台,关于 .NET 平台的发布与计划,理解运行时和 SDK 的区别,检查 .NET 版本信息,理解 X86、X64 和 ARM64 处理器架构的区别,使用微软提供的工具删除并卸载过时的 .NET 版本,管理 .NET 项目和项模板。