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

2019年12月25日

软件调试的技术和方法

摘要: 调试的关键在于推断程序内部的错误位置及原因,可以采用以下方法: 1、分析和推理 设计人员和开发人员根据软件缺陷问题的信息, 分析和推理调试软件。 (1)根据软件程序架构自顶向下缩小定位范围, 确定可能发生问题的软件组件。 (2)根据软件功能,软件运行时序定位软件问题。 (3)根据算法原理,分析和确定 阅读全文

posted @ 2019-12-25 16:27 活着的虫子 阅读(6063) 评论(0) 推荐(0) 编辑

软件调试和版本管理的关系

摘要: 软件调试和版本管理的关系非常密切: 在软件调试过程中可能有多种算法都可达到 预期的目标,但只能选择其中一种,这时需要保留各种 有价值的算法版本;软件调试完成后,需要进行代码优 化,在代码优化的过程中需要保留各种不同的版本;软 件调试完成后,需要增加功能和提升性能,在此基础上 开展下一步调试工作,需要 阅读全文

posted @ 2019-12-25 13:47 活着的虫子 阅读(207) 评论(0) 推荐(0) 编辑

软件调试前的准备工作

摘要: 在我们对某个问题进行调试前一定要做足准备工作,不然后面的调试工作会面临极大的困难,甚至都无法开展调试工作。 必须要做的准备工作 不管我们是在开发期调试,还是在发布后调试,都要做好如下准备工作: 充足的心里准备这个太重要了,在实际工作中,我见到太多被问题吓怕的人。在还没整清楚问题是什么时就已经打了退堂 阅读全文

posted @ 2019-12-25 11:38 活着的虫子 阅读(479) 评论(0) 推荐(0) 编辑

2019年12月24日

软件调试原则和策略

摘要: 在日常工作中,我们还是有些原则要坚守,也有些策略可用: 1、调试的本质:确认原则 修正充满错误的程序,就是逐个确认,你自认为正确的许多事情所对应的代码确实是正确的。当你发现其中某个假设不成立时,就表示已经找到了关于程序错误的位置的线索了,可能并不时准确的位置。 换一种表达方式来说:惊讶是好事。当你认 阅读全文

posted @ 2019-12-24 19:32 活着的虫子 阅读(1104) 评论(0) 推荐(0) 编辑

软件调试和应用软件开发模式

摘要: 根据软件代码规模,应用软件的开发大致分为三 种模式。 程序员个人开发的小软件 用例图 这种模式和早期的软件开发模式类似。 小软件开发用例图如图所示。 软件调试的特点 发现问题(测试)、定位问题和提出解决问题方 案、修改程序代码、验证全部由程序员负责。 软件调试 可以分为静态调试与动态调试。 1、静态 阅读全文

posted @ 2019-12-24 17:45 活着的虫子 阅读(1034) 评论(0) 推荐(0) 编辑

2019年12月23日

什么是软件调试

摘要: 软件调试的概念 软件调试是泛指重现软件缺陷问题,定位和 查找问题根源,最终解决问题的过程。 软件调试通常有如下两种不同的定义: 定义1:软件调试是为了发现并排除软件程序中 的错误,可以通过某种方法控制被调试程序的执行过 程,以便随时查看和修改被调试程序执行状态的方法。 在该定义中,软件测试属于软件调 阅读全文

posted @ 2019-12-23 18:16 活着的虫子 阅读(9678) 评论(0) 推荐(0) 编辑

PN结原理和对三极管反向偏置能导通的思考

摘要: 前言 最近看完PN结和三极管的科普视频,有一件事没想通。对于NPN型三极管,工作在放大状态时,发射结正偏,集电结反偏。那么问题来了,集电结反偏时,为什么还会产生集电结->发射结的电流?为了搞清楚这个问题,在网上查了一些资料,并综合自己的理解写下了这篇博客,以备自己以后查阅,同时分享给有同样疑问的人, 阅读全文

posted @ 2019-12-23 16:30 活着的虫子 阅读(5451) 评论(2) 推荐(2) 编辑

2019年12月21日

Windbg源代码窗口的使用

摘要: 在 WinDbg 中,源窗口显示已加载到调试器中的源文件。 如何打开源代码窗口 通过菜单File >Open Source File打开源代码文件,窗口随之打开 通过快捷键Ctrl+O 通过工具栏 设置源路径,调试器实时自动打开 使用源代码窗口 通过上面方式打开的窗口如下: 每个源窗口都显示一个源文 阅读全文

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

Windbg的快捷键

摘要: 窗口切换 可以使用以下键盘快捷方式窗口之间进行切换。 项效果 CTRL+TAB 调试信息窗口之间切换。 通过重复使用此密钥,你可以扫描通过的所有窗口,而不考虑是否浮动、 停靠本身,或选项卡式停靠窗口的集合的一部分。 Alt+Tab 目前,在您的桌面上的窗口之间切换。 此外可以使用此键盘快捷方式的 W 阅读全文

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

Windbg Command Browser(命令浏览器)窗口的使用

摘要: 命令浏览器窗口显示并存储调试器命令的文本结果。此窗口创建命令引用,使您可以查看特定命令的结果,而无需重新输入该命令。命令浏览器窗口还提供了对存储的命令的导航,因此您可以比使用调试器命令窗口更快地访问命令。 命令浏览器的打开 通过菜单Veiw >Command Browser 通过快捷键Ctrl+N 阅读全文

posted @ 2019-12-21 11:29 活着的虫子 阅读(697) 评论(0) 推荐(0) 编辑

Windbg Scratch Pad(便笺簿)窗口的使用

摘要: “便笺簿”窗口是一个剪贴板,您可以在其中键入和保存文本。 打开便笺簿 通过菜单View >Scratch Pad 通过快捷键Alt+8 通过工具栏 使用便笺簿 用上面的方式打开的窗口如下: 在草稿板窗口中,可以执行以下操作: 若要在草稿板窗口中键入,单击窗口,然后开始键入的你想要添加的文本。 此外可 阅读全文

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

Windbg Memory(内存)窗口的使用

摘要: 在 WinDbg 中,可以查看和编辑内存,通过输入命令或通过使用内存窗口。 内存窗口的打开 通过菜单View-->Memory 通过快捷键Alt+5 通过工具栏 使用内存窗口 通过上面方式打开的窗口如下: 内存窗口显示多个列中的数据。 在窗口的左侧列显示每个行的开始地址。 其余列显示所需的信息,从左 阅读全文

posted @ 2019-12-21 10:39 活着的虫子 阅读(1496) 评论(0) 推荐(0) 编辑

Windbg Processes and Threads(进程和线程)窗口的使用

摘要: 在 WinDbg 中,进程和线程窗口中显示有关系统、 进程和线程正在调试的信息。 此窗口还可选择新的系统、 进程和线程处于活动状态。 如何打开进程和线程窗口 通过菜单View >Processes and Threads 快捷键Alt+9 通过工具栏 使用进程和线程窗口 通过上面的方式打开的窗口如下 阅读全文

posted @ 2019-12-21 10:10 活着的虫子 阅读(509) 评论(0) 推荐(0) 编辑

Windbg Register(寄存器)窗口的使用

摘要: 寄存器是位于在 CPU 的小易失性内存单位。 许多寄存器专用于特定用途,并可用于用户模式应用程序使用的其他寄存器。 基于 x86 和基于 x64 的处理器在有可用的寄存器的不同集合。 如何打开寄存器窗口 通过菜单View >Registers 通过快捷键Alt+4 通过工具栏 寄存器窗口 通过上面方 阅读全文

posted @ 2019-12-21 09:52 活着的虫子 阅读(1826) 评论(0) 推荐(0) 编辑

Windbg Locals(局部变量)窗口的使用

摘要: 在WinDbg中,可以通过输入命令、使用“局部变量”窗口或使用“监视”窗口查看局部变量。局部变量窗口显示当前作用域中的本地变量的所有信息。 如何打开Locals窗口 通过菜单View >Locals 通过快捷键Al+3 通过工具栏 局部变量窗口 通过上面的方式打开的窗口如下: 局部变量窗口可以包含四 阅读全文

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

2019年12月20日

Windbg Watch(监视)窗口的使用

摘要: 在WinDbg中,可以使用“监视”窗口显示和更改全局和局部变量和寄存器信息。 您可以自定义此窗口以显示您正在跟踪的项。。“监视”窗口可以显示所需的任何变量列表。这些变量可以包括来自任何函数的全局变量和局部变量。任何时候,“监视”窗口都会显示与当前函数范围匹配的变量值。也可以通过“监视”窗口更改这些变 阅读全文

posted @ 2019-12-20 18:13 活着的虫子 阅读(1073) 评论(0) 推荐(0) 编辑

Windbg Assembly Code(反汇编)窗口的使用

摘要: 在WinDbg中,可以通过输入命令(u, ub, uu (Unassemble))或使用反汇编窗口查看程序汇编代码。 如何打开 DissAssembly Code窗口 通过菜单View-->Disassembly 快捷键Alt+7 工具栏按钮 DissAssembly窗口 通过上面的方式打开的窗口如 阅读全文

posted @ 2019-12-20 17:19 活着的虫子 阅读(1912) 评论(0) 推荐(0) 编辑

Windbg Call Stack(调用堆栈)窗口的使用

摘要: 调用堆栈是指向程序计数器当前位置的函数调用链。调用堆栈的顶部函数是当前函数,下一个函数是调用当前函数的函数,依此类推。显示的调用堆栈基于当前程序计数器,除非更改寄存器上下文。 在 WinDbg 中,可以通过输入命令或通过使用Call Stack窗口中查看调用堆栈。 Call Stack窗口的打开方式 阅读全文

posted @ 2019-12-20 16:26 活着的虫子 阅读(3202) 评论(1) 推荐(1) 编辑

设置微软符号服务器的又一方法

摘要: 通过注册表设置:HKLM\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\symbols下,设置SymbolPath,类型为REG_EXPAND_SZ。可以通过命令行直接添加: reg add "HKLM\SOFTWARE\Microso 阅读全文

posted @ 2019-12-20 14:44 活着的虫子 阅读(2691) 评论(14) 推荐(2) 编辑

windbg是如何搜索符号文件的?

摘要: 来个样例 我的符号目录设置是: 用我们在windows下调试必须用到的ntdll.dll模块来讲下windbg加载符号文件的过程。windbg加载符号文件时,会首先根据配置的符号目录信息,在本地符号目录中查找对应的符号文件。一个典型的搜索过程如下:F:\Debug_Symbol\Symbols32\ 阅读全文

posted @ 2019-12-20 11:41 活着的虫子 阅读(1131) 评论(0) 推荐(0) 编辑

2019年12月19日

如何关闭/禁用.NET JIT调试对话框

摘要: 当.NET程序有未处理的异常时,您可能会希望关闭出现的调试对话框。下面有两个选项: 1、启用JIT调试的注册表项 对于包含托管代码的应用程序,公共语言运行库将显示类似于JIT附加调试器的对话框。控制此选项的注册表项称为HKEY_LOCAL_MACHINE\Software\Microsoft\.NE 阅读全文

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

EXCEPTION_HIJACK(0xe0434f4e)异常的抛出过程

摘要: 样例工程 在VS2013里新建一个C#控制台工程,写下如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespa 阅读全文

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

异常EXCEPTION_HIJACK(0xe0434f4e)

摘要: 简介 EXCEPTION_HIJACK,值为0xe0434f4e。意思是CLR线程劫持异常。异常劫持是CLR在挂起线程进行垃圾收集的过程中抛出的。它的抛出是为了帮助停止后恢复执行。它定义在..\clr\src\inc\corexcep.h头文件里,如下: #define EXCEPTION_HIJA 阅读全文

posted @ 2019-12-19 16:33 活着的虫子 阅读(424) 评论(0) 推荐(0) 编辑

Windows WoW64浅析

摘要: WOW64(Windows-On-Windows 64bit)是X64 Windows操作系统的一个子系统,为32位应用程序提供运行环境。类似的还有WOW32子系统,负责在32位Windows系统上运行16位应用程序。 WoW64存在的原因还要从CPU的发展上开始说,X86指令集是一个指令集架构家族 阅读全文

posted @ 2019-12-19 00:32 活着的虫子 阅读(6593) 评论(0) 推荐(0) 编辑

再谈Windows SEH

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

posted @ 2019-12-19 00:14 活着的虫子 阅读(2) 评论(0) 推荐(0) 编辑

2019年12月18日

在执行一行代码之前CLR做的68件事

摘要: 因为CLR是一个托管环境,所以运行时中有几个组件需要在执行任何代码之前初始化。本文将介绍EE(执行引擎)启动程序,并详细检查初始化过程。68只是一个粗略的指南,它取决于您使用的运行时版本、启用了哪些功能以及其他一些东西。 样例代码 假设你有一个最简单的C#程序,在CLR将“Hello World”输 阅读全文

posted @ 2019-12-18 21:33 活着的虫子 阅读(461) 评论(0) 推荐(0) 编辑

异常CLRDBG_NOTIFICATION_EXCEPTION_CODE( 0x04242420)的抛出过程

摘要: 新建一个c#控制工程,就用自动生成的代码,不用补任何代码,如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { 阅读全文

posted @ 2019-12-18 20:58 活着的虫子 阅读(635) 评论(0) 推荐(0) 编辑

异常CLRDBG_NOTIFICATION_EXCEPTION_CODE( 0x04242420)

摘要: 简介 CLRDBG_NOTIFICATION_EXCEPTION_CODE,值为0x0x04242420。此异常在.CLR 4.0的启动路径期间触发,是CLR4.0版本初始化调试服务时向调试器发送消息通知。个人认为这应该只在附加调试器时抛出。 详细说明 这实际上是一个未记录的异常(CLRDBG_NO 阅读全文

posted @ 2019-12-18 20:02 活着的虫子 阅读(570) 评论(0) 推荐(0) 编辑

First Chance Exception是什么?

摘要: 是否调试过应用程序并在输出窗口中看到有关“First Chance”异常的消息?有没有想过: 什么是First Chance Exception? 第一次机会异常是否意味着我的代码中存在问题? 在调试应用程序时,每当此时遇到异常,调试器就会收到通知,应用程序将挂起,调试器将决定如何处理异常。第一次通 阅读全文

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

关于System.FormatException异常

摘要: 什么是FormatException 参数格式无效或复合格式字符串不正确时引发的异常。 继承 Object Exception SystemException FormatException 详细说明 由于以下原因之一, 可能会引发异常:FormatException 在对将字符串转换为其他数据类型 阅读全文

posted @ 2019-12-18 17:19 活着的虫子 阅读(11984) 评论(0) 推荐(0) 编辑

关于System.InvalidOperationException异常

摘要: 什么是InvalidOperationException 操作无效异常。当方法调用对对象的当前状态无效时引发的异常。 继承 Object Exception SystemException InvalidOperationException 详细说明 如果调用方法失败是由无效参数以外的其他原因导致的 阅读全文

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

CLR Exception 0xE0434F4D和0xE0434352的区别

摘要: 《根据《CLR Exception E0434352》和《CLR Exception E0434F4D》这两篇随笔,我们会发现,这两个异常太相似了,除了代码值不一样,其他几乎都一样。在windbg里调试dmp时,也会看到都叫它们CLR Exception。那他们有什么区别呢?这个问题值得研究研究。 阅读全文

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

2019年12月16日

Rotor里的异常处理

摘要: 我看到了一些关于Rotor(和CLR)中使用的异常处理机制的问题。下面是关于Rotor异常处理的另一个注意事项列表。目的是帮助Rotor开发人员调试和理解CLR中的异常。 异常生成和抛出 此步骤在很大程度上取决于异常的类型以及从何处引发异常: jitted代码中的软件异常 使用C#中throw ne 阅读全文

posted @ 2019-12-16 17:02 活着的虫子 阅读(250) 评论(0) 推荐(0) 编辑

2019年12月14日

用!htrace调试句柄泄漏的一般步骤

摘要: Windbg调试器的!htrace扩展对于调试泄漏处理非常方便。该过程基本上可归结为以下简单步骤: 启用跟踪 拍张快照 情景分析 显示差异 在第四步!htrace将在最后一个快照之后显示所有额外打开的句柄,以及调用堆栈(如果可用)。这大大有助于调试哪些句柄是泄漏的,以及由谁来处理。与其他任何资源泄漏 阅读全文

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

利用异常实现反调试

摘要: 0×01 介绍 一些文章已经介绍过通过检测异常来对抗调试器的技术。这个思想很简单:根据设计本意,调试器会处理特定的异常。如果一个异常包裹在try块中,只有当没有附加调试器的时候,异常处理程序才会执行。因此,可以得出结论,只要异常块没有执行,那么程序就正在被一个调试器调试。 0×02 一个字节的Int 阅读全文

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

VS中的Modules窗口

摘要: 当我在别人的机器上调试问题时,我做的第一件事就是查看modules窗口。按版本排序并看到一个不属于的dll可以帮助立即诊断配置问题,并节省许多调试痛苦。 下面介绍下各列的意思: Name:模块名称。 Path:PE在文件系统上的位置。当您希望找到正确的PE以开始使用命令行工具进行查询时,这非常有用。 阅读全文

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

Visual Studio调试XSLT

摘要: Visual Studio是一个很大的工具。很容易遗漏一些有用的特性。希望XSLT调试器不会错过。在下面,您可以看到调试器正在运行,因为xslt转换正在应用于某些XML。(请原谅我在示例中使用的毫无意义的XSLT。我有很长一段时间没有机会使用XSLT了。) XSLT调试对我来说很有趣,因为它大部分是 阅读全文

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

PDB files out of the debugger

摘要: 我想我不需要强调在调试时拥有有效的PDB文件有多重要。通常,PDB文件是由调试器静默加载的,并且您很高兴在modules窗口中看到解析的所有符号。不幸的是,您还可能遇到调试器找不到匹配符号的情况。其原因可能与断开的互联网连接或更复杂的签名不匹配一样微不足道。在本文中,我将向您展示如何在调试之前检查符 阅读全文

posted @ 2019-12-14 11:28 活着的虫子 阅读(812) 评论(0) 推荐(0) 编辑

Visual Studio源服务器缓存

摘要: 您是否想过Visual Studio 2008/2010在哪里存储从源服务器下载的源文件?默认情况下,它们会放在Local Settings\Applications Data\SourceServer下的主目录中。如果您使用两个不同的调试器,或者有多个用户使用您的计算机,则可能需要更改此位置。很遗 阅读全文

posted @ 2019-12-14 11:07 活着的虫子 阅读(409) 评论(0) 推荐(0) 编辑

有关OutputDebugString的一点儿事实

摘要: 我最近花了一些时间分析OutputDebugString方法。在我的另一个实验中,我需要一个仅依赖于本机API的OutputDebugString版本。在实现它的过程中,我发现了一些关于OutputDebugString的有趣的事实,也许您也会感兴趣。 OutputDebugString的工作原理 阅读全文

posted @ 2019-12-14 10:54 活着的虫子 阅读(1975) 评论(0) 推荐(0) 编辑

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

导航