上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页

2020年1月9日

如何获得或提高调试技能

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

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

2020年1月8日

windbg的初始化脚本

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

posted @ 2020-01-08 11:47 活着的虫子 阅读(417) 评论(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 活着的虫子 阅读(976) 评论(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) 编辑

2020年1月7日

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 活着的虫子 阅读(860) 评论(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 活着的虫子 阅读(577) 评论(0) 推荐(0) 编辑

收集API调用日志的快速的方法

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

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

揭示WinDbg中工作空间的工作方式

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

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

WinDbg的alias与block

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

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

2020年1月6日

在Windows Vista中,在指定的Win32最后一个错误值中断

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

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

我倾向于使用发布版本进行调试,而不是使用调试版本

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

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

常见WinDbg问题及解决方案

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

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

在崩溃转储中查找所有可能的上下文记录

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

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

向C/C++程序员介绍Windbg 脚本

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

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

2020年1月4日

VS 使用技巧(1)

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

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

Windows资源监视器软件的原理

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

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

微架构、指令集架构与汇编语言的关系

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

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

调试寄存器 原理与使用:DR0-DR7

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

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

2020年1月3日

如何学习调试?

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

posted @ 2020-01-03 15:21 活着的虫子 阅读(490) 评论(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 活着的虫子 阅读(1397) 评论(0) 推荐(0) 编辑

为什么调试在编程中很重要?

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

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

2020年1月2日

CPU对软件调试的支持(三)

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

posted @ 2020-01-02 17:33 活着的虫子 阅读(589) 评论(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 活着的虫子 阅读(506) 评论(0) 推荐(0) 编辑

CPU对软件调试的支持(一)

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

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

他山之石:软件调试相关方面

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

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

他山之石:软件质量鉴定问题的初步研究

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

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

2019年12月31日

他山之石:软件调试的方法与技巧

摘要: 软件 的调试 也称纠错或排错 , 它是孤立并纠正错误的一种技巧性过程 。 软件错误的外部表现形式与内部 原 因之间往往没有 明显 的联系 , 所 出现的差错并非直接就能找 出原 因 。 因此 , 调试 既要对 错误 的性 质及 程序 本身进 行系统的研 究 , 在某种程 度上也要靠直觉与经验 。 到 阅读全文

posted @ 2019-12-31 16:53 活着的虫子 阅读(776) 评论(0) 推荐(0) 编辑

他山之石:一种循环结构的软件调试方法

摘要: 1 引 言 软件规模 日趋庞大 , 软件调试 中 , 发现 、 定位、分析错误的工作量也相应增长 。 因此 , 人们 开发 了 C o d e iV e w 等调试工具以 深 入错 误发 生时的程序执行环 境 , 使效率大增 。 不过对于 下 面的循环结构 ( 以 C 语言为例 )仍有为难之处 : 阅读全文

posted @ 2019-12-31 16:06 活着的虫子 阅读(224) 评论(0) 推荐(0) 编辑

C++基于SEH二次封装的异常流程与识别

摘要: 在看代码之前我们先连简单的看下try的处理流程吧 函数入口设置回调函数 函数的异常抛出使用了__CxxThrowException函数,此函数包含了两个参数,分别是抛出一场关键字的throw的参数的指针,另一个抛出信息类型的指针(ThrowInfo *)。 在异常回调函数中,可以得到异常对象的地址和 阅读全文

posted @ 2019-12-31 14:51 活着的虫子 阅读(382) 评论(0) 推荐(0) 编辑

他山之石:软件调试过程中的心里效应与心理承受能力分析

摘要: 随着计算机技术的飞速 发展和普及 , 越来越多的人直接与计算机打交道 , 因而产生 了研 究计算机操作者心理状态 的一 门综合性很强的边缘交叉科学 - 一软件心 理学。 软件心 理学 把实验心 理学 的技术和 认知心理学的概念应用于 计算机和信息科学 , 它 主要研究了计算机 科学 中人机系统和软件 阅读全文

posted @ 2019-12-31 14:41 活着的虫子 阅读(269) 评论(0) 推荐(0) 编辑

2019年12月30日

他山之石:调试之剑

摘要: 弗雷德里克·布鲁克斯( F r e d e r i c k P·B r o o ks ) 博士在他那篇著名的《没 有 银弹— 软件工程 中的根本和次要问 题》 一文 中 , 将软件项目比作可怕的人狼 (w e r e w o l v e s ) , 并大胆地预言十年内不会 找到特别有效 的银 弹 。 阅读全文

posted @ 2019-12-30 19:09 活着的虫子 阅读(272) 评论(0) 推荐(0) 编辑

他山之石:软件调试排错阶段的可靠性评估模型

摘要: 在硬 件可靠性 理 论 中 , 典 型 的失效 率 又( t ) 函 数是 一条 形 似“ 浴 盆” 的曲线 。 浴 盆 曲线 由三 段 构成 : 早 期故 障期 、 偶 然故 障期 、 耗损 故 障期 。 这种 曲线描 述 了事物 生命期 的 整个过 程 , 而 且具 有普遍 性 。 对 软件来 阅读全文

posted @ 2019-12-30 17:58 活着的虫子 阅读(1059) 评论(0) 推荐(0) 编辑

他山之石:InfoQ采访Spinellis---如何有效地调试软件

摘要: Diomidis Spinellis是《代码阅读与代码质量》一书的作者。在GOTO阿姆斯特丹2016大会上,他就如何有效地调试软件和预防错误做了演讲。InfoQ采访了Spinellis,内容涉及发现和修复软件中的错误、软件调试的原则、如何提高调试效率、如何编写出不怎么需要调试的代码以及管理人员如何为 阅读全文

posted @ 2019-12-30 11:42 活着的虫子 阅读(180) 评论(0) 推荐(0) 编辑

2019年12月27日

局部静态变量只能初始化一次是怎么实现?

摘要: 静态变量可以分为全局静态变量,和局部静态变量,先来说说全局的吧。全局静态变量和全局变量的区别并不大,只是全局静态变量只能在当前文件中使用,而在反汇编中二者并无区别,只可以在当前文件中使用,不过是编译器做出的限制。局部静态变量,会有些特殊,它不会随着作用域结束而消失,在未进入作用于之前就已经存在。局部 阅读全文

posted @ 2019-12-27 11:05 活着的虫子 阅读(2644) 评论(0) 推荐(0) 编辑

CPU工作的基本原理以及如何设计一个简单的16位CPU模型

摘要: 转自:https://bbs.pediy.com/thread-183180.htm 如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有计算机有CPU,现在的电子产品都很先进,很多设备例如手机、洗衣机甚至电视和你家的汽车上面都得装一个CPU),数字电路基础,还最 阅读全文

posted @ 2019-12-27 10:32 活着的虫子 阅读(6106) 评论(0) 推荐(1) 编辑

2019年12月26日

符号文件如何让断点发挥作用的?

摘要: 调试符号文件(pdb)是一种很复杂的文件,由于这种文件格式微软并不公开,所以至今为止,并没有一篇文章或资料敢说自己对pdb文件进行了深入剖析。更重要的原因是,我们为了研究调试技术,需要知道一些系统(操作系统,编译器,连接器,调试器等)调试支持,仅仅知道即可,没必要深究微软为了实现调试而做出的每一个细 阅读全文

posted @ 2019-12-26 17:13 活着的虫子 阅读(330) 评论(0) 推荐(0) 编辑

程序的可调试性

该文被密码保护。 阅读全文

posted @ 2019-12-26 15:43 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

软件调试的九个规则

摘要: 这就个规则来自于书籍《调试九法:软硬件错误的排查之道》,记录下来: 规则1:理解系统 你必须掌握系统的工作原理以及它是如何设计的,在某些情况下还要知道为什么这样设计。如果你没有理解系统中的某个部分,那么这通常是出问题的地方。(这不仅仅是墨菲定律的问题,如果你不能理解你所设计的系统,你的工作可能会变得 阅读全文

posted @ 2019-12-26 14:22 活着的虫子 阅读(450) 评论(0) 推荐(0) 编辑

2019年12月25日

调试器工作流程

摘要: 转自:https://blog.csdn.net/sinat_35360663/article/details/80176269 阅读全文

posted @ 2019-12-25 17:39 活着的虫子 阅读(187) 评论(0) 推荐(1) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页

导航