基础篇
是么是Debug?
重要的基本概念:Dump,堆栈,调试符号
熟悉调试器
实战篇
如何获取Dump
调试实例:解决实际问题
什么是Debug?
改程序执行了非法操作,即将被关闭!
开发式的调试:
使用开发工具进行实时调试
软件通常是调试版本
有源代码,主要调试程序逻辑错误
由软件开发人鱼和测试人员完成
生产环境和事后调试:
主要针对服务器产品的一男杂症
通过对Dump文件了解出错时的状态信息
通常没有源代码
由技术支持工程师承担
IT Pro需要了解的debug知识:
应用程序工作的机制
导致崩溃的一些主要原因
性能分析和调试
如何获取必要的调试信息
帮助进行关键需错误的排错,熟悉调试的术语和工具,懂得如何获取正确的dump,配合技术支持工程师进行排错和debug
什么样的问题需要进行Debug:
程序异常崩溃,且没有明确的Event Log和以往案例致命出错原因
性能问题:High CPU,内存泄露
程序表现异常,没有得到期待的执行结果
没有固定发生频率,无法重现的问题
认识调试器:
用户模式下的调试器:msdev,ntsd,cdb
内核模式下的调试器:kd
多用途调试器:windbg
重要的调试基本概念:dump,堆栈,调试符号
应用程序,进程,线程:
应用程序是由一个或多个进程组成,进程包含各种资源,句柄和线程,在WIN32环境中.exe可执行文件在执行的时候会创建一个进程对象。
代码编译完之后编译生成.exe文件包含代码运行时和代码的机器指令;
执行.exe文件后,windows会帮助该文件生成一个进程对象;
主线程根据代码指定的地址空间开始执行代码;
DUMP文件是进程崩溃时内存的完整转储;
调试符号可以将call stack中北调函数的地址解析为函数名称。