应用程序调试技术视频各集技术概述

简介:

这是第一部分,Windows平台下的应用程序调试技术讲座视频, 视频购买地址:

http://product.china-pub.com/3502590  

 

视频试听地址: http://v.youku.com/v_show/id_XMzU4OTUzNzAw.html 
 

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的方法,以及设置源代码调试的步骤 

 

18CLR虚拟机及托管调试命令-应用程序域和装配件

        讲解应用程序域(AppDomain)的知识以及它的使用场景

        讲解装配件(Assembly)的知识

        讲解在调试器里查看AppDomain和Assembly信息的方法 

        讲解在Assembly里混合C#、VB.NET以及Managed C++代码的方法,以及调试这种模块的方法

 

19CLR虚拟机及托管调试命令-对象

        讲解对象(Object)在.NET虚拟机里的实现方式

        讲解在调试器里查看托管对象、数组内存布局的方法

        讲解查看堆栈的方法 


20CLR虚拟机及托管调试命令-类型

        讲解类型(Type)、泛型(Generics)和函数(Method)在.NET虚拟机里的实现方式

        讲解在调试器里查看类型和函数内存布局以及信息的方法

        讲解在windbg里调试托管程序设置断点的方法 

 

21CLR虚拟机及托管调试命令-线程

        讲解线程在.NET虚拟机里的实现方式

        讲解在调试器里查看线程信息的方法

        讲解线程同步在.NET虚拟机里的实现方式,以及在调试器里查看同步信息的方法

        讲解线程池的实现方式以及在调试器里查看相关信息的方法

 

22CLR虚拟机及托管调试命令-GC

        讲解垃圾回收(GC )在.NET虚拟机里的实现方式;

        查看GC相关信息的方法

        解释Close和Dispose函数的实现与区别 

        讲解弱引用对象的原理和使用方法

        .NET里的内存管理技巧

 

23CLR虚拟机及托管调试命令-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执行验尸调试的办法

         设置企业内部用的自动收集错误报告服务器的方法。

 

27Windbg调试自动化

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


本文转自 donjuan 博客园博客,原文链接: http://www.cnblogs.com/killmyday/archive/2012/03/01/2375130.html  ,如需转载请自行联系原作者

相关文章
|
2月前
|
存储 测试技术 Android开发
探索安卓应用开发:从基础到高级
【9月更文挑战第31天】在这篇文章中,我们将一起踏上安卓应用开发的旅程。无论你是初学者还是有一定经验的开发者,本文都将为你提供有价值的信息和指导。我们将从安卓应用开发的基础知识开始,逐步深入到更高级的主题。通过阅读本文,你将了解到如何构建一个安卓应用,包括用户界面设计、数据存储和网络通信等方面。此外,我们还将探讨一些高级主题,如性能优化、安全性和测试。让我们一起开始吧!
|
2月前
|
安全 Java 开发工具
掌握安卓应用开发:从基础到高级的全面指南
本文旨在为读者提供一个详尽的指南,帮助他们掌握安卓应用开发的基础知识及高级技巧。从环境搭建到项目实践,逐步深入讲解安卓开发的各个环节。无论是对于刚入门的初学者还是希望进一步提升的开发者,本文都将提供实用的建议和示例代码,帮助你快速上手并提升技能。
|
7月前
|
存储 安全 API
构建安全可靠的系统:第一章到第五章
构建安全可靠的系统:第一章到第五章
273 0
|
5月前
|
设计模式 安全 关系型数据库
PHP开发涉及一系列步骤和技术
【7月更文挑战第2天】PHP开发涉及一系列步骤和技术
141 57
|
3月前
|
存储 Java API
深入探索安卓应用开发:从基础到高级
本文将引导读者从安卓应用开发的基础出发,逐步深入到高级技巧和最佳实践。无论是刚入门的新手还是已有一定经验的开发者,都能在本文中找到有价值的内容。通过详细的步骤解析和实用的代码示例,我们将一步步揭示安卓开发的精髓,助你在技术之路上不断进步。
47 0
|
4月前
|
域名解析 运维 监控
网络故障排查的常用工具与方法:技术深度解析
【8月更文挑战第20天】网络故障排查是一项复杂而重要的工作,需要网络管理员具备扎实的网络知识、丰富的实践经验和灵活的问题解决能力。通过掌握常用工具和方法,遵循科学的排查流程,可以显著提高故障排查的效率和准确性。希望本文能为读者在网络故障排查方面提供有益的参考和启示。
|
4月前
|
运维 监控 大数据
深入探讨网络自动化的魅力所在,以及如何利用Python这一强大工具,实现网络设备的批量配置与监控
在信息洪流的浪潮中,网络自动化如同一盏明灯,引领着我们穿越复杂网络管理的迷雾。它不仅简化了网络运维人员的工作,更是在大数据、云计算等技术飞速发展的背景下,成为了构建高效、稳定网络环境的关键。本文将深入探讨网络自动化的魅力所在,以及如何利用Python这一强大工具,实现网络设备的批量配置与监控,以此展现网络自动化在简化复杂网络管理中的重要作用。
85 0
|
开发框架 .NET C#
【C#编程最佳实践 十四】VS调试最佳实践
【C#编程最佳实践 十四】VS调试最佳实践
82 0
|
算法 安全 测试技术
嵌入式软件测试笔记2 |TEmb方法概述
嵌入式软件测试笔记2 |TEmb方法概述
144 0