01 2020 档案

什么是软件生存周期模型
摘要:软件生存周期模型的定义 软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。 IEEE把一个软件生存周期模型描述为:一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。 中国计算机科学与技术百科全书称软件生存周期模型为" 阅读全文

posted @ 2020-01-31 22:44 活着的虫子 阅读(1265) 评论(0) 推荐(0) 编辑

软件生存周期过程之组织过程
摘要:组织过程是指那些与软件生产组织有关的过程。包括如下7个主要的过程: 管理过程 基础设施过程 改进过程 人力资源过程 资产管理过程 重用大纲管理过程 领域工程过程 管理过程 管理过程是软件生存周期过程中管理者所从事的一系列活动。管理人员负责产品管理、项目管理和过程任务管理。 管理过程主要包含以下活动: 阅读全文

posted @ 2020-01-31 16:19 活着的虫子 阅读(658) 评论(0) 推荐(0) 编辑

软件生存周期过程之支持过程(二)
摘要:确认过程 确认过程是一个确定需求和最终的已建成的系统或软件产品是否满足特定预期用途的过程。本过程的目的是:证实对软件工作产品特定预期使用的需求已实现。本过程可以作为开发过程中软件验收支持活动的一个部分来执行。可以由来自同一组织一个人或多个人来实施,也可以由来自另一组织的人员来实施。在由一个独立于供方 阅读全文

posted @ 2020-01-31 15:37 活着的虫子 阅读(336) 评论(0) 推荐(0) 编辑

软件生存周期过程之支持过程(一)
摘要:支持过程是有关各方按他们的支持目标所从事的一系列相关活动集。支持过程有助于提高系统或软件产品的质量。支持过程可由使用他们的组织来实施;或作为一种服务,由一个独立的组织来实施;也可做为项目的一项规定内容,由客户来实施。 支持过程主要包括如下9个过程: 文档编制过程 配管管理过程 质量保证过程 验证过程 阅读全文

posted @ 2020-01-24 16:32 活着的虫子 阅读(1115) 评论(0) 推荐(0) 编辑

软件生存周期过程之基本过程
摘要:基本过程是指那些与软件生产直接相关的过程。 主要包括5个过程: 获取过程 供应过程 开发过程 运行过程 维护过程 获取过程 是获取者所从事的活动和任务,为需求方而定义的活动。目的是获得满足客户所表达的那些需求的产品和/或服务。该过程以定义客户需求开始,以接受客户所要求的产品和/或服务结束。 本过程包 阅读全文

posted @ 2020-01-23 23:18 活着的虫子 阅读(1137) 评论(0) 推荐(0) 编辑

软件生存周期过程的定义
摘要:软件生命周期(Systems Development Life Cycle,SDLC) 软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软 阅读全文

posted @ 2020-01-22 16:25 活着的虫子 阅读(3745) 评论(0) 推荐(0) 编辑

什么是软件工程
摘要:缘起 随着计算机技术的发展和计算机应用的日益普及,软件系统的规模越来越庞大,高级编程语言不穷,应用领域不断拓宽,社会对软件的需求量剧增,但软件开发技术却没有重大突破,软件质量不高,生产效率低下,从而导致了“软件危机”的产生。 自1970年起,由于“软件危机”的产生,迫使人们去研究改变软件开发的技术手 阅读全文

posted @ 2020-01-22 15:10 活着的虫子 阅读(1218) 评论(0) 推荐(0) 编辑

Windbg非侵入性调试(用户模式)
摘要:如果用户模式应用程序已经在运行,调试器可以非侵入性地对其进行调试。对于非侵入性调试,您没有那么多的调试操作。但是,您可以最小化调试器对目标应用程序的干扰。如果目标应用程序已停止响应,则非侵入性调试非常有用。在非侵入性调试中,调试器实际上并不附加到目标应用程序。调试器挂起目标的所有线程,并可以访问目标 阅读全文

posted @ 2020-01-20 23:12 活着的虫子 阅读(389) 评论(0) 推荐(0) 编辑

硬件断点的原理与实现
摘要:硬件断点的原理 Intel 80306以上的CPU给我们提供了调试寄存器用于软件调试,硬件断点是通过设置调试寄存器实现的。 上图为Intel手册提供的32位操作系统下8个调试寄存器的图示(Intel手册卷3 17章第二节 Debug Registers,有兴趣的朋友可以查阅),根据介绍,DR0-DR 阅读全文

posted @ 2020-01-11 11:07 活着的虫子 阅读(3511) 评论(0) 推荐(1) 编辑

调试时底层次思考的重要性
摘要:低层次思考,我指的是从应用程序内部思考的重要性,有时是在机器代码级别。 大多数人认为,要知道如何调试应用程序,只需要学习如何使用调试器。但事实上,学习如何使用调试器只是解决复杂软件问题所需的一部分。因此,我觉得有必要解释在处理应用程序问题(如挂起、崩溃、内存泄漏、应用程序错误和性能问题)时,低层思考 阅读全文

posted @ 2020-01-11 09:40 活着的虫子 阅读(280) 评论(0) 推荐(0) 编辑

Windbg里DLL相关下断点
摘要:加载DLL 的时候断 sxe ld:[dll] 比如: sxe ld:wininet.dll (在wininet.dll 被装载的时候断点) 这里DLL名字是支持通配符的 比如: sxe ld:wini*.dll 也可以在事件过滤器里设置 卸载DLL 的时候断 sxe ud:[dll] 也可以在事件 阅读全文

posted @ 2020-01-11 08:58 活着的虫子 阅读(878) 评论(0) 推荐(0) 编辑

下载指定符号
摘要:1. 下载dmp文件所有相关模块的symbols,缓存到共享路径,便于其它人快速下载。symchk.exe /id c:\MyApplication.dmp /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/ 阅读全文

posted @ 2020-01-11 08:43 活着的虫子 阅读(834) 评论(0) 推荐(0) 编辑

解决复杂应用程序问题时要考虑的首要问题
摘要:1、对于反应性事件:“将工程师带到现场,因为这样可以更容易地隔离问题。” 这是我听到的最常见的误解。让我解释一下:大多数复杂的问题都需要深入的调试会话。收集必要的信息是很容易的,可以远程或由客户完成。但是,调试转储文件可能需要几个小时或几天。由于我们可能无法访问我们的私有符号,也无法与具有特定技术知 阅读全文

posted @ 2020-01-09 12:00 活着的虫子 阅读(313) 评论(0) 推荐(0) 编辑

如何获得或提高调试技能
摘要:有时我遇到一些人,他们认为他们只需要知道调试器命令就可以成为一个好的调试人员。这是一种误解。就像国际象棋:仅仅因为你知道游戏规则和如何移动棋子并不意味着你是一个好玩家。事实上,要想在国际象棋中取得好成绩,你需要学习的不仅仅是基础知识!要想成为象棋高手,你需要学习更多!调试是一样的。调试、测试和开发代 阅读全文

posted @ 2020-01-09 11:33 活着的虫子 阅读(455) 评论(0) 推荐(0) 编辑

windbg的初始化脚本
摘要:每次启动windbg时,我都会运行一些命令,我突然意识到,也许是时候将这些命令放到脚本中,让windbg自动执行它了。首先,创建一个包含要运行的所有命令的文件。对于本例,让我创建一个名为“dbg-prep.wds”的文件 C:\Users\ilhoye\Desktop\WinDbg> type db 阅读全文

posted @ 2020-01-08 11:47 活着的虫子 阅读(423) 评论(0) 推荐(0) 编辑

Visual Studio中使用Windbg的最小设置
摘要:下面是在Visual C++ 中配置Windbg的一个例子。首先找到下面的菜单 点击弹出 点击"Add"做如下配置 Title &Windbg Command C:\Program Files (x86)\Debugging Tools for Windows (x86)\windbg.exe Ar 阅读全文

posted @ 2020-01-08 10:18 活着的虫子 阅读(994) 评论(0) 推荐(0) 编辑

请右击Windbg的DML
摘要:你们都知道并喜欢DML,那些出现在WinDbg输出中的超链接,允许你们在思考崩溃代码的含义时漫无目的地点击。 但是,你知道DML在WinDbg的Windows10版本中甚至更好吗?已添加对游戏更改功能的支持:右键单击!是的,您现在可以右键单击DML输出并打开一个新的选项菜单: 此菜单中包括在新窗口中 阅读全文

posted @ 2020-01-08 09:47 活着的虫子 阅读(248) 评论(0) 推荐(0) 编辑

Windbg脚本文件的一个坑儿
摘要:这个坑儿就是 脚本文件一定要保存为ANSI编码,不然执行不了。 做个实验,来个简单的脚本: .echo haha 保存为1_1.wds 然后执行 0:000> $<f:\脚本\1_1.wds 0:000> .echo haha haha 正常。用记事本打开,另存,选择编码为unicode 然后在执行 阅读全文

posted @ 2020-01-08 09:39 活着的虫子 阅读(287) 评论(0) 推荐(0) 编辑

windbg跳过初始断点
摘要:当我们用Windbg打开一个exe时,调试器第一次中断: 输入kb查看当前栈如下: 0:000> kb # ChildEBP RetAddr Args to Child 00 00fff8bc 77d498e0 5e7dcb19 0105b000 00000000 ntdll!LdrpDoDebug 阅读全文

posted @ 2020-01-07 17:05 活着的虫子 阅读(865) 评论(0) 推荐(0) 编辑

再谈Windbg脚本装载指令
摘要:装载指令和文件路径前的空格问题 单个$装载的 $<filename $><Filename 此两种方式,要求文件路径和前面的标识符紧贴,不允许有空格。 示例如下: 0:000> $<f:\1.wds 0:000> .echo hello windbg hello windbg 0:000> $< f 阅读全文

posted @ 2020-01-07 11:40 活着的虫子 阅读(578) 评论(0) 推荐(0) 编辑

收集API调用日志的快速的方法
摘要:调试问题时可能面临的一个常见任务是记录有关对一个或多个函数的调用的信息。如果你想知道你的程序中有一个你有源代码的函数,你可以添加一些调试打印和重建程序,有时这是不实际的。例如,您可能不总是能够重现一个问题,因此可能不可行的是,必须重新启动调试生成,因为您可能会吹走您的重现。或者,更重要的是,您可能需 阅读全文

posted @ 2020-01-07 10:20 活着的虫子 阅读(1658) 评论(0) 推荐(0) 编辑

揭示WinDbg中工作空间的工作方式
摘要:工作区对我来说总是有点混乱。我知道如何说服他们做我需要做的工作,但他们仍然有点神秘。最近我决定解决这个问题,只是为了知道他们是如何在幕后工作的。但在我向您展示我的调查之前,让我们讨论不同类型的工作区。Windbg使用几种内置类型,包括Base、User、Kernel、Remote、Processor 阅读全文

posted @ 2020-01-07 10:17 活着的虫子 阅读(228) 评论(0) 推荐(0) 编辑

WinDbg的alias与block
摘要:WinDbg的alias命令(as, aS)在script里面很有用,但是WinDbg的script不算是一种设计良好的语言,一般在写WinDbg script总会遇到各种坑,就包括alias命令的求值。 与变量相比,WinDbg的alias更像是C语言的宏。他可以把一个名字定义成指定的字符串,环境 阅读全文

posted @ 2020-01-07 09:55 活着的虫子 阅读(219) 评论(0) 推荐(0) 编辑

在Windows Vista中,在指定的Win32最后一个错误值中断
摘要:通常,您可能希望在调试器中跟踪的一类问题(除了崩溃)是某个特定函数以某种方式失败。在大多数Win32函数的情况下,通常会得到某种(希望是有意义的)最后的错误代码。有时,您可能需要知道返回错误的原因或错误的来源(在最后一个错误值通过几个函数向上传播的情况下)。一种可能的方法是使用条件断点,但是SetL 阅读全文

posted @ 2020-01-06 15:39 活着的虫子 阅读(437) 评论(0) 推荐(0) 编辑

我倾向于使用发布版本进行调试,而不是使用调试版本
摘要:我发现自己在工作中和工作之外不时支持的一件事是使用程序的发布版本(无论如何,对于Windows应用程序)进行调试的价值。乍一看,这可能与某些人的想法相矛盾,因为人们往往认为调试构建实际上更适合调试(毕竟它被命名为“调试构建”)。 然而,我倾向于不同意这种观点,理由有如下几个: 仅在调试版本上调试是不 阅读全文

posted @ 2020-01-06 14:58 活着的虫子 阅读(274) 评论(0) 推荐(0) 编辑

常见WinDbg问题及解决方案
摘要:当你调试一个程序时,你最不想处理的是调试器不能正常工作。当你试图集中精力跟踪一个bug时,总是会因为次要的问题而被忽略,尤其是当调试器的问题导致你失去一个重新编程或者浪费了大量的时间等待调试器完成它,而调试器知道这需要永远做些什么的时候。 这是我时常会遇到的大量问题,所以我整理了一些常见问题的简短列 阅读全文

posted @ 2020-01-06 13:53 活着的虫子 阅读(782) 评论(0) 推荐(0) 编辑

在崩溃转储中查找所有可能的上下文记录
摘要:如果您调试了一段时间的崩溃转储,那么您可能遇到了这样的情况:调试器提供的初始转储上下文对应于在处理初始异常时发生的第二个异常,该异常可能更接近您正在调查的问题中的原始基础问题。这可能很烦人,因为“.ecxr”命令将指向次要故障异常的位置,而不是原始异常上下文本身。然而,在大多数情况下,原始的、主要的 阅读全文

posted @ 2020-01-06 11:47 活着的虫子 阅读(318) 评论(0) 推荐(0) 编辑

向C/C++程序员介绍Windbg 脚本
摘要:来自Windows调试工具包的所有调试程序都使用相同的引擎dbgeng.dll。它包含一种特殊语言的脚本解释器,我们称之为WinDbg脚本语言以方便使用,我们对WinDbg脚本文件使用WDS文件扩展名。下面是在分析一个脚本时捕获的WinDbg线程的调用堆栈: 0:000> ~1kL 100 Chil 阅读全文

posted @ 2020-01-06 10:28 活着的虫子 阅读(1031) 评论(0) 推荐(0) 编辑

VS 使用技巧(1)
摘要:相信做开发的没有不重视效率的。开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS。能够对一个IDE产生依赖,说明这个IDE确实有它的独特之处。无容置疑,VS是一个非常强大的IDE,它支持多语言编辑。支持C#,VB,C/C++,HTML......它拥有强大的调试编译功能。它让我们不用去记 阅读全文

posted @ 2020-01-04 14:13 活着的虫子 阅读(436) 评论(0) 推荐(0) 编辑

Windows资源监视器软件的原理
摘要:微软给我们提供了一些很好的程序,比如资源监视器,可以从这个软件里获取分析windows的自身的一些性能数据,比如CPU、内存、磁盘数据、文件读写、进程线程等,他具体怎么实现呢,今天这天文章就带你去获取其真实的原理。 1.分析 打开windows任务栏管理器,在其性能选项里,可以看到性能监控的一些机器 阅读全文

posted @ 2020-01-04 10:04 活着的虫子 阅读(1855) 评论(0) 推荐(2) 编辑

微架构、指令集架构与汇编语言的关系
摘要:最近老是碰到x86 IA32 MIPS什么的对应的汇编又是有好几种,感觉很迷。遂查资料理清这些个概念如下(大部分内容来自维基百科,如有错误谢指正!) 微架构、指令集架构和汇编语言这三者的关系大概是这样的,我们分别来介绍下 指令集 指令就是要计算机执行某种操作的命令。 从计算机组成的层次结构来说 指令 阅读全文

posted @ 2020-01-04 09:02 活着的虫子 阅读(3091) 评论(2) 推荐(2) 编辑

调试寄存器 原理与使用:DR0-DR7
摘要:下面介绍的知识性信息来自intel IA-32手册(可以在intel的开发手册或者官方网站查到),提示和补充来自学习调试器实现时的总结。 DRx对应任意的一个调试寄存器。LENn对应任意一个长度。Ln对应任意一个局部置位,DR0-DR7可以直接被读写操作(MOV 指令之类的,DRx可以是源操作数也可 阅读全文

posted @ 2020-01-04 08:59 活着的虫子 阅读(2211) 评论(0) 推荐(0) 编辑

如何学习调试?
摘要:首先 , 学习时应该多动手实验 , 拳不离手 , 曲不离口 。 以我个人的经历 为例 , 干编程以来, 我几 乎每天工作时都使用 调试器 。 除了使用它调 试程 序 、 寻 找代码 中 的问题 , 我还使用调试器认识其它软件 、 探 索操作系统 、 观察硬件等等 。 另外 , 学习调试时要 多思 考 阅读全文

posted @ 2020-01-03 15:21 活着的虫子 阅读(492) 评论(0) 推荐(0) 编辑

WinDbg: 执行 SOS 扩展命令 !clrstack时报错 Access violation exception (0xC0000005)
摘要:今天在调试分析一个dump文件时,当我执行了".loadby sos clrjit"指令后,准备分析托管代码的问题,于是我又输入了"!clrstack"扩展指令想看下托管栈,结果Windbg给我如下输出: 0:000> .loadby sos clrjit0:000> !clrstackc00000 阅读全文

posted @ 2020-01-03 11:11 活着的虫子 阅读(1404) 评论(0) 推荐(0) 编辑

为什么调试在编程中很重要?
摘要:有很多因素决定了调试在编程乃至整个计算机世界中的无比重要性。从根本上来说,是计算机系统的设计理念决定了调试的重要地位。现代计算机系统的一个重要设计原则是让硬件在软件的指挥下工作,把灵活和智能留在软件中实现,这同时也把计算机系统的控制权交给了软件。让软件控制强大的计算机硬件是聪明的,运行不同的软件就可 阅读全文

posted @ 2020-01-03 09:44 活着的虫子 阅读(1931) 评论(0) 推荐(0) 编辑

CPU对软件调试的支持(三)
摘要:两期我们分别介绍了通过 INT3指令设置的软件断点 和通过调试寄存器设置 的硬件断点。 除了断点 . 还有一类常用的方法使C P U 中断到调试器 . 这便是调试陷阱标志 (debug trap f l a g ) 。 也就 是 当这些陷阱标志被设置时, 一旦有符合陷阱条件的事件发生,就会陷入到调试 阅读全文

posted @ 2020-01-02 17:33 活着的虫子 阅读(598) 评论(0) 推荐(0) 编辑

CPU对软件调试的支持(二)
摘要:从38 6 开始 , IA 一3 2 处理器 内部都含有 8 个 3 2 位的调试 寄存器 DR0一 DR7 (如 图 1 所 示 )。 除了 DR4 和 DR5 保留 外 , 其它 6 个寄存器 分别是 : 四 个 3 2 位的调试地址 寄存器 (DR0~DR3) 一个 3 2 位的调试控制寄存器 阅读全文

posted @ 2020-01-02 15:47 活着的虫子 阅读(512) 评论(0) 推荐(0) 编辑

CPU对软件调试的支持(一)
摘要:随软件向大型化和复杂化方向发展 . 软件调试的难度 也在不断增大。 对于一 些小的软件 我们可 以不讲究什么方法 . 只要通过插入print语句等简单手段就可 以解决问题 但是如果是要调试一个比较大的系统 . 不讲究必要的调试 技巧就会多花费很多时间甚至根本行不通了。那么如何掌握调试技巧 , 提高调 阅读全文

posted @ 2020-01-02 14:13 活着的虫子 阅读(1061) 评论(0) 推荐(0) 编辑

他山之石:软件调试相关方面
摘要:由于软件调试是软件质量鉴定工 作必须 具备的前提条件 , 而且软件调试 过程关系到 软件质量的优 劣 , 所以 , 专门讨论软件调试技未的有关内容。 目前 , 软件设计人员中存在着一种错误 的认识 , 即认为软件调试只 是为了证明 自己 设计的软件或怪序的正 确性。 在这种思想指 导下 , 软件设计 阅读全文

posted @ 2020-01-02 10:39 活着的虫子 阅读(279) 评论(0) 推荐(0) 编辑

他山之石:软件质量鉴定问题的初步研究
摘要:本文 主要讨 论软件质量鉴定问题的有关内容 。 在一个包 含 有计算机 的系统工程 中, 软件质量鉴定工作是相当重要的 , 因为它影响 到系统可靠性等技术 指标的好坏。 所以 , 应高度重视并 认真研究 软件质量鉴定工作的方法等技术问题 。 软件是依赖于特定硬件条件下 的产品。 既然它是产品 , 也 阅读全文

posted @ 2020-01-02 10:23 活着的虫子 阅读(374) 评论(0) 推荐(0) 编辑

导航