Windows程序员进阶系列《软件调试》
文章平均质量分 89
ithzhang
继续向架构师挺进
展开
-
Windows程序员进阶系列:《软件调试》之一:调试基础
Windows程序员进阶系列:《软件调试》之一:调试基础 一位著名的计算机科学家曾说过:软件调试要比编写代码困难一倍。因此在阅读《软件调试》这本书之前,我已经做好了攻坚克难的准备。希望广大读者也要心里有个谱,做好这个准备。 软件调试是软件开发和维护中一项非常繁重的任务。 一方面是难度很高,另一方面是任务繁重。因此在一个典型的软件团队中,往往会花费可观的时间用在软件调试中。在进入原创 2013-01-31 09:56:08 · 5839 阅读 · 5 评论 -
windows程序员进阶系列:《软件调试》之Win32堆
Win32堆管理器Windows在创建一个新的进程时会为该进程创建一个第一个堆,被称为进程的默认堆。默认堆的句柄会被保存在进程环境块_PEB的ProcessHeap字段中。要获得_PEB的地址,可以通过$peb伪寄存器来获得。也可以通过.process获得。 如上图ProcessHeap字段即为进程默认堆。其上的HeapSegmentReserve是进程堆的预订(默认为1MB)大小。HeapSeg原创 2013-10-14 18:37:19 · 6464 阅读 · 3 评论 -
windows程序员进阶系列:《软件调试》之堆 的基本概念和分类
windows程序员进阶系列:《软件调试》之堆 (一) 堆是软件在运行时动态申请内存空间的主要途径。从堆上申请来的空间需要程序员自己申请和释放,且申请和释放操作必须绝对匹配。忘记释放或者多次释放可能会导致严重问题。与栈类似,使用堆的过程中也会由于向堆中写入超过所申请堆大小的数据,覆盖堆上的其他内容,而导致堆溢出问题。由于堆的特殊性,一旦堆被破坏将会导致一些严重的问题。由于如果对堆不够了解的话对于原创 2013-10-12 16:35:55 · 3829 阅读 · 3 评论 -
windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍
windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍 拥有一个顺手的武器是每一个武林高手梦寐以求的。对于windows程序员来说,WinDbg调试器就是我们的武器。熟练使用调试器能大大提高我们的调试能力。本博文将详细介绍涉及到WinDbg调试器的基本使用方法以及在实际调试过程中经常使用到得各种命令和技巧。 WinDbg是一个功能非常强大的调试器。它支持多原创 2013-03-03 13:02:40 · 26814 阅读 · 5 评论 -
windows程序员进阶系列:《软件调试》之Win32堆的调试支持
Win32堆的调试支持 为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试。 1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出。2:释放检查(Heap Free Check)在释放堆块时进行检查,防止释放同一个堆块。3:参数检查,对传递给堆的各种参数进行更多的检查。4:调用时验证(Heap Validate On Call)H原创 2013-10-16 19:46:51 · 8202 阅读 · 1 评论 -
windows程序员进阶系列:《软件调试》之六--编译器的调试支持
编译器的调试支持 编译器用于将高级语言翻译成cpu可以识别的机器代码。经历了几十年的发展,编译器发生了很大的变化,但是支持调试这一点没有任何改变。检查并报告被编译软件中的错误是编译器设计的一个主要目标。编译器在编译源代码和链接目标代码时,会做很多的检查工作。这包括编译期检查和运行期检查。 编译期检查:编译器在编译过程中,会检查代码中的语法错误,与此同时还会检查可能存在的逻辑错误和设计缺陷,并以编译原创 2013-03-25 20:34:44 · 2967 阅读 · 0 评论 -
windows程序员进阶系列:《软件调试》之七--运行期检查
运行库和运行期检查 上一篇文章我们介绍了编译期检查,编译期检查主要是检查程序的静态特征。对于程序运行期才体现出的错误,必须使用编译器提供的运行期检查功能。为了支持运行期检查,编译器提供了运行库。在运行库中提供了一些机制。 C/C++运行库 为了增强编程语言的能力,加快软件开发的速度,几乎所有的编程语言都定义了相配套的函数库或类库。比如C标准定义了标准C函数,C++标准定义了C++标准类库。这些库通原创 2013-04-07 19:27:59 · 6967 阅读 · 0 评论 -
windows程序员进阶系列:《软件调试》之五windows操作系统概要
windows程序员进阶系列:《软件调试》之五:Windows操作系统概要 操作系统是计算机系统中的基本软件。它负责管理系统中的软硬件资源。通常都包括文件管理、内存管理、进程管理、打印管理、网络管理等基本功能。除此之外,支持调试也是操作系统设计的一项根本任务。 从被调试对象的角度来看,可以把操作系统的调试支持分为以下三个方面: 一:对应用程序的调试。即如何简单高效的原创 2013-03-13 21:31:44 · 10330 阅读 · 4 评论 -
windows程序员进阶系列:《软件调试》之二:cpu基础
windows程序员进阶系列:《软件调试》之二:cpu基础 by ithzhang blog.csdn.net/ithzhang 转载请注明出处!! 本文将会介绍与软件调试密切相关的cpu基础。很多软件开发人员对硬件知识了解都比较少,为了帮助大家更好的入门软件调试,这里简单帮大家回顾下硬件的一些基础知识。涉及cpu的基础,如寄存器啦,指令了啥原创 2013-02-01 08:40:19 · 5594 阅读 · 3 评论 -
windows程序员进阶系列:《软件调试》之四:断点和单步调试
windows程序员进阶系列:《软件调试》之四:断点和单步调试 断点和单步调试是两个经常使用的调试功能,也是调试器的核心功能。在第一篇文章中曾简单介绍了下,本文我们将会对它们进行更详细的介绍。 软件断点 INT3断点指令是专门用来支持调试的指令。它的目的就是是cpu中断到调试器,以供调试者对执行现场进行各种分析。当我们在调试软件时,可以在某出插入INT3指令,当cpu执行到此断原创 2013-02-03 14:56:24 · 18343 阅读 · 11 评论 -
windows程序员进阶系列:《软件调试》之三:中断和异常
windows程序员进阶系列:《软件调试》之三:中断和异常 中断和异常是计算机原理中很重要的概念。在任务切换、时间更新、系统调用、软件调试等的许多功能都是依靠中断和异常机制实现的。 EIP存储着cpu下一条要执行的指令的地址,执行完一条再取一条,如此往复循环。有了中断机制可以让cpu暂时停下当前的任务,转去处理突然事件或其他需要处理的任务。 中断 中断通常是由外部输原创 2013-02-02 14:54:27 · 4327 阅读 · 0 评论 -
由使用LeakDialog时遇到的问题而引出的一些分析
由使用LeakDialog时遇到的问题而引出的一些分析 前段时间在使用leakDialog检测调用malloc和new所分配的内存泄露时,发现其根本不起作用!这让我百思不得其解!周末有时间研究了一下终于弄清了原因所在。本着分享的精神,将其写成博文,希望对大家有用。 LeakDialog是用于内存泄露检测的常用工具。使用LeakDialog不需要添加任何代码,就可以捕获各种形原创 2014-02-11 20:12:56 · 4915 阅读 · 0 评论