第13期-使用内存转储调试程序性能
- 6天前 | 48分钟
- 免费
学习内存转储文件,抓取内存快照,在 Visual Studio 中创建转储文件,使用 ProcDump 灵活创建转储文件,在任务管理器中创建转储文件,使用运行诊断分析工具,调试并分析内存泄漏,知道哪些对象占用内存,调试并分析高 CPU 使用率的应用,知道哪些线程或方法占用 CPU 使用率,调试并分析死锁,快速定位死锁位置。
学习内存转储文件,抓取内存快照,在 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 项目和项模板。