应用程序调试技术之Windows篇

应用程序调试技术之Windows篇

(1人)

199.50 元 5 折

全场5折优惠,咨询QQ810476411

课程介绍

开源力量课程 -   应用程序调试技术之Windows篇


课程学习法


    六维学习法

    • 视频滚动学习,终身有效
    • 老师指导实战练习辅导
    • 24小时讨论区回答
    • 每周视频坐班直播互动答疑
    • 开源力量结业考试
    • QQ同学会交流 咨询QQ: 810476411客服QQ

课程背景

  • Windows应用程序调试技术实务分为调试基本概念和设置,Windows下常用到调试工具VS和Windbg的使用,自动化调试技术,以及实际调试场景示例等。不仅仅是介绍枯燥的程序调试技术,而是深入的从操作系统实现以及.NET虚拟机实现的本质出发,介绍调试工作中的工作方法、流程和相关技术。
    本课程的讲师长期从事程序调试工作,参与了大量的程序调试工作。

课程目标

  • 本课程是培训讲师多年程序调试工作经验的总结。从程序调试的基本技术入手,针对大量实战案例进行剖析,让学员在掌握相关技术的同时,真正学会程序调试的方法。

课程大纲


  • 第1讲 准备调试环境
    调试符号文件的作用;
    创建符号文件的方法;
    在调试器里有无符号文件的区别;
    公开符号版本和私有符号版本的区别;
    创建公开符号文件的方法;
    了解符号文件服务器的作用;
    掌握在Visual Studio以及Windbg里使用符号文件的方法;
    了解无法调试程序时的排错步骤。

    第2讲 管理符号文件与源代码
    创建符号文件服务器;
    调试时集成符号文件服务器和源代码版本控制服务器,以便调试时,调试机不需要有程序的源代码,调试器会自动从源代码服务器上下载正确的版本。讲解了集成SVN和Visual SourceSafe两种版本服务器的方法,这样方便一个大型研发团队进行每日编译(daily build)式的开发测试环境。如果跟第26讲(验尸调试)结合来看的话,甚至可以在团队局域网内部建立一个自动的BUG收集服务器,跟符号服务器、源码服务器配合组成一个随时随地的BUG跟踪和分析系统。


    第3讲 Visual Studio基本调试技术
    断点的实现原理;
    条件断点以及跟踪断点;
    函数断点以及异常断点;
    原生程序设置数据断点;
    VS提供的各个调试窗口简介;
    调试浮点数计算错误的方法。

    第4讲 Visual Studio调试技术中
    在程序启动和异常终止时附加调试器;
    设置远程调试;
    使用RPC调试功能同时调试COM程序的客户端和服务器端;
    在立即窗口里调试刚刚写好的函数;
    SQL调试技术,即在ASP.NET网站或者ADO.NET程序中,单步跟进数据库存储过程等一系列数据库调试技巧。

    第5讲 Visual Studio自动化调试及并行调试
    在C++和.NET程序里添加调试支持,方便调试器在调试的时候收集信息;
    使用Visual Studio的自动化接口编写自动化调试脚本;
    调试并行代码,分析性能瓶颈

    第6讲 Windbg 基本功能介绍
    作业讲解里有调试WPF程序,分析WPF程序性能瓶颈的方法;
    Windbg的基本调试命令讲解,设置断点,加载符号文件,查看内存等基本命令

    第7讲 调试栈溢出问题(上)

    第8讲调试栈溢出问题(下)
    两个视频是连续的。
    从汇编的角度以及实际函数调用过程讲解了栈的实现,以及调用函数时的创建栈和释放栈的过程;
    内存溢出问题的调查步骤;
    栈溢出病毒攻击的原理;
    调试栈溢出问题的方法;
    C++各种调用规范(Calling Convention)的讲解以及相关函数调用演示;
    在.NET里调用使用不同调用规范的函数;
    调用规范不匹配导致栈溢出的调查方法;
    防范栈溢出的措施。

    第9讲调试堆溢出问题(上)

    第10讲调试堆溢出问题(中)

    第11讲调试堆溢出问题(下)
    三个视频是连续的
    CRT调试堆的实现;
    使用CRT调试堆检查堆溢出问题 ;
    从系统内核的角度讲解Windows内存堆的实现,以及演示堆里面内存的分配和释放过程;
    堆溢出的原理讲解
    调试堆溢出的方法
    调试释放内存时使用了错误的堆句柄这个错误的方法
    调试使用未初始化内存问题的方法


    第12讲调试资源泄露问题(上)

    第13讲调试资源泄露问题(下)
    两个视频是连续的
    调试堆内存泄露这个很常见的编程错误
    调试进程内和进程间句柄泄露的方法
    在MFC里检查内存泄露的办法
    调试JavaScript里内存泄露

    第14讲调试多线程问题(上)

    第15讲调试多线程问题(下)
    两个视频是连续的
    调试多线程间数据竞争的问题
    在多线程里添加调试支持
    调试用户态线程同步死锁问题
    调试内核态线程同步死锁问题
    调试竞争锁资源问题
    调试使用CPU资源过多的问题
    多线程编程的注意事项

    第16讲内核调试与托管程序调试准备工作(上)
    调试Windows内核的方法,以及设置源代码级内核调试的方法

    第17讲内核调试与托管程序调试准备工作(下)
    在windbg里调试.NET程序的方法及原理
    在windbg里调试.NET虚拟机CLR的方法,以及设置源代码调试的步骤

    第18讲CLR虚拟机及托管调试命令-应用程序域和装配件
    讲解应用程序域(AppDomain)的知识以及它的使用场景
    讲解装配件(Assembly)的知识
    讲解在调试器里查看AppDomain和Assembly信息的方法
    讲解在Assembly里混合C#、VB.NET以及Managed C++代码的方法,以及调试这种模块的方法

    第19讲CLR虚拟机及托管调试命令-对象
    讲解对象(Object)在.NET虚拟机里的实现方式
    讲解在调试器里查看托管对象、数组内存布局的方法
    讲解查看堆栈的方法

    第20讲CLR虚拟机及托管调试命令-类型
    讲解类型(Type)、泛型(Generics)和函数(Method)在.NET虚拟机里的实现方式
    讲解在调试器里查看类型和函数内存布局以及信息的方法
    讲解在windbg里调试托管程序设置断点的方法

    第21讲CLR虚拟机及托管调试命令-线程
    讲解线程在.NET虚拟机里的实现方式
    讲解在调试器里查看线程信息的方法
    讲解线程同步在.NET虚拟机里的实现方式,以及在调试器里查看同步信息的方法
    讲解线程池的实现方式以及在调试器里查看相关信息的方法

    第22讲CLR虚拟机及托管调试命令-GC
    讲解垃圾回收(GC )在.NET虚拟机里的实现方式;
    查看GC相关信息的方法
    解释Close和Dispose函数的实现与区别
    讲解弱引用对象的原理和使用方法
    .NET里的内存管理技巧

    第23讲CLR虚拟机及托管调试命令-COM互操作与异常
    解释COM对象与.NET互操作的原理
    解释.NET异常的实现原理
    从.NET里使用COM对象的方法
    从COM里使用.NET对象的方法
    调试在.NET程序里使用COM对象出现问题时的方法

    第24讲托管调试其他工具(上)
    讲解sosex命令的使用方法
    调试.NET程序死锁的方法
    调试.NET程序内存使用过多的方法,以及调试.NET程序内存的其他一些问题。

    第25讲托管调试其他工具(下)
    讲解psscor命令的使用方法
    调试ASP.NET页面访问速度过慢的问题
    演示ASP.NET缓存的使用方法
    调试因使用ASP.NET缓存而导致内存不够的问题的方法
    调试调用web服务出现OOM异常的方法

    第26讲验尸调试
    讲解验尸调试的原理,以及使用Visual studio、Windbg以及Adplus执行验尸调试的办法
    设置企业内部用的自动收集错误报告服务器的方法。

    第27讲Windbg调试自动化
    使用windbg提供的脚本语言编写调试用脚本程序的方法,实现自动化的程序调试。

本期嘉宾


    本期嘉宾:施懿民
  • 知平软件创始人
  • 曾就职于海辉软件任高级测试经理,负责微软.NET虚拟机CLR的测试工作。对Windows和Linux系统,Java与.NET平台均有深入研究,现正从事编译器的编写与研究工作。

QQ客服: 810476411

QQ咨询: 810476411

QQ吐槽: 810476411

服务时间: 9:00 - 21:00

刘老师: 18516031455

微信公众号:开源力量