上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页

2020年5月20日

通过Visiual Studio调试理解异常

摘要: 如果您花了任何时间编写代码,很可能您不得不处理异常处理。在Visual Studio中,当异常被抛出或最终未被处理时,调试器可以帮助您通过中断来调试这些异常,就像在遇到断点时中断一样。下面我们将讨论异常的不同分类,以及如何配置调试器何时为这些异常中断。 异常分类 我们将从调试器中异常的分类类型开始。 阅读全文

posted @ 2020-05-20 08:38 活着的虫子 阅读(527) 评论(0) 推荐(0) 编辑

2020年5月19日

Visual Studio 2015 Update 1及之后的版本对C++ 内存访问异常调试的一点改进

摘要: 编写C/C++代码时,通常使用复杂的代码行来处理多个指针,例如,在单个行上访问多个指针。然而,当访问冲突发生时,很难破译这行代码的哪一部分是问题所在。为了调试这个问题,您可能已经将这一行代码分解成多行,但不会再这样了。当使用Visual Studio 2015更新1时发生这种情况时,您可以很容易地看 阅读全文

posted @ 2020-05-19 08:16 活着的虫子 阅读(332) 评论(0) 推荐(0) 编辑

2020年5月18日

仅从特定模块引发异常时中断(Visual Studio 2017及更高版本)

摘要: 在Visual Studio 2015中,引入了新的异常设置窗口,该窗口提供了一种快速的方法,可以将调试器配置为在抛出异常时中断。作为窗口更新的一部分,仅仅按异常类型过滤并不总是足够好,您需要对调试器何时中断抛出的异常进行更细粒度的控制。因此,在Visual Studio 2017中,引入了一个新功 阅读全文

posted @ 2020-05-18 08:48 活着的虫子 阅读(949) 评论(0) 推荐(0) 编辑

2020年5月16日

Visual Studio调试器指南---单击运行调试(2017及更高版本)

摘要: 在Visual Studio中使用调试器浏览代码时,有许多选项,包括设置断点、单步执行和使用Run-to-Cursor。在Visual Studio 2017中,引入了Run to Click,这是一种更容易调试代码的新方法——点击式风格。不再需要设置临时断点或多次执行步骤来执行代码并在所需的行上停 阅读全文

posted @ 2020-05-16 08:44 活着的虫子 阅读(886) 评论(0) 推荐(0) 编辑

2020年5月15日

记一次数据库文件破坏引起的崩溃排查过程

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

posted @ 2020-05-15 08:55 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

2020年5月14日

Visual Studio调试器指南---Disassembly窗口

摘要: “反汇编”窗口显示与编译器所创建的指令对应的汇编代码。 如果你正在调试托管的代码,这些程序集指令对应于在实时 (JIT) 编译器,而非 Microsoft 中间语言 (MSIL) 由 Visual Studio 编译器创建所创建的本机代码。在调试的环境下,我们可以很方便地通过反汇编窗口查看程序生成的 阅读全文

posted @ 2020-05-14 08:44 活着的虫子 阅读(2273) 评论(0) 推荐(2) 编辑

2020年5月13日

Visual Studio调试器指南---Register窗口

摘要: 寄存器是处理器(CPU)中的特殊区域,用于存储处理器需要当前处理的少量数据。 编译或解释源代码时会生成一些指令,这些指令根据需要将数据从内存移动到寄存器或反之。 相对于访问内存数据,访问寄存器数据非常快。那些允许处理器将数据保留在寄存器并多次访问的代码,比起那些需要处理器不断加载和卸载寄存器的代码执 阅读全文

posted @ 2020-05-13 08:36 活着的虫子 阅读(1290) 评论(0) 推荐(2) 编辑

2020年5月12日

Visual Studio调试器指南---Threads窗口

摘要: 大多数的应用程序都使用多线程技术。对应Windows应用程序,为了能够使用户界面保持快速响应,经常需要把费时的任务放在与主应用程序独立的线程上运行。此时,多个线程的并发执行调试变得很困难,特别是在多个线程访问同一个类和方法时。Threads能够帮助我们减轻复杂度。 打开窗口 一般来说当程序遇到断点进 阅读全文

posted @ 2020-05-12 08:41 活着的虫子 阅读(1823) 评论(0) 推荐(1) 编辑

2020年5月11日

关于System.Convert.ToInt16(float value)抛异常System.OverflowException---值对于 Int32 太大或太小的原因的探究

摘要: 前面有个案例最终查明原因是System.Convert.ToInt16的调用导致溢出异常: 0:000> !PrintException /d 4ee2e8f4Exception object: 4ee2e8f4Exception type: System.OverflowExceptionMess 阅读全文

posted @ 2020-05-11 08:46 活着的虫子 阅读(2492) 评论(0) 推荐(0) 编辑

2020年5月9日

关于System.OverflowException异常

摘要: 什么是OverflowException 就是溢出异常。这个一般是当在线程检查的上下文中执行的算术、强制转换或转换运算导致溢出时引发的异常。 继承 Object Exception SystemException ArithmeticException OverflowException 说明 在运 阅读全文

posted @ 2020-05-09 08:27 活着的虫子 阅读(6927) 评论(0) 推荐(0) 编辑

2020年5月8日

记一次System.OverflowException异常的排查过程

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

posted @ 2020-05-08 08:28 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

2020年5月7日

Visual Studio调试器指南---Memory 1-4窗口

摘要: Memory窗口可用于查看特定位置的原始内存数据。前面介绍的Watch、Autos和Locals窗口可以查看位于内存特定位置的变量值,而Memory窗口则会显示存储在内存中的数据概貌。 打开窗口 通过菜单栏打开 快捷键打开Ctrl+Alt+M 数字(1...4)按下组合键后,状态栏如下 然后在按数字 阅读全文

posted @ 2020-05-07 08:25 活着的虫子 阅读(1473) 评论(0) 推荐(0) 编辑

2020年5月6日

关于异常System.NullReferenceException

摘要: 什么是NullReferenceException 试图访问或取消引用空对象引用时引发的异常。 继承链 Object Exception SystemException NullReferenceException 说明 尝试访问值为空的类型上的成员时,将引发NullReferenceExcepti 阅读全文

posted @ 2020-05-06 08:13 活着的虫子 阅读(13937) 评论(0) 推荐(0) 编辑

2020年5月5日

记一次System.NullReferenceException的排查过程

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

posted @ 2020-05-05 08:13 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

2020年5月4日

记一次野指针引起的虚函数调用崩溃的排查

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

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

2020年5月2日

关于C++标准异常之std::out_of_range

摘要: 简介 定义于头文件 <stdexcept> class out_of_range; 定义要作为异常引发的对象类型。它报告试图访问定义范围之外的元素所导致的错误。它可以由std::bitset和std::basic_string的成员函数、std::stoi和std::stod函数族以及边界检查的成员 阅读全文

posted @ 2020-05-02 21:24 活着的虫子 阅读(13455) 评论(0) 推荐(1) 编辑

2020年5月1日

VC调试器高级应用----高级断点篇

摘要: 高级断点语法 高级断点语法由两部分组成: 上下文部分.用函数,源文件和二进制模块来指定上下文,上下文的表示方法: {[函数],[源文件],[二进制模块]}。 位置,表达式,变量或Windows消息条件. 必须指定唯一的,足够的上下文信息才能获取断点位置.如:在TEST.CPP的20行设一位置断点,语 阅读全文

posted @ 2020-05-01 21:58 活着的虫子 阅读(480) 评论(0) 推荐(0) 编辑

2020年4月30日

Visual Studio调试器指南---CallStack窗口

摘要: 除了在调试会话中检测变量的内容外,还应仔细评估代码的逻辑,确保所有代码按期望的顺序执行。Vsual Studio提供一组窗口,他们显示了暂停程序执行时所加载和执行的代码。这样就可以更好的理解代码的运行时行为,快速找出逻辑错误。 这些窗口有Call Stack窗口、Threads窗口、Moduls窗口 阅读全文

posted @ 2020-04-30 08:32 活着的虫子 阅读(3860) 评论(2) 推荐(1) 编辑

2020年4月29日

记一次C++ EH exception(e06d7363)之std::out_of_range异常的排查

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

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

2020年4月28日

Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符

摘要: 在“监视”、“自动”和“局部变量”窗口中,可以使用格式说明符更改值显示的格式。还可以在即时窗口、命令窗口、跟踪点甚至源窗口中使用格式说明符。如果在这些窗口中暂停,表达式结果将显示在数据提示中。数据提示根据格式说明符显示。 设置格式说明符 我们将使用下面的示例代码: int main() { int 阅读全文

posted @ 2020-04-28 08:13 活着的虫子 阅读(1059) 评论(0) 推荐(0) 编辑

2020年4月27日

Visual Studio调试器指南---Immediate窗口

摘要: 在编写代码或调试应用程序时,为了测试某个功能或者显示应用程序的工作状态,经常需要计算简单表达式的值。使用Immediate窗口可以很方便地实现这种操作。该窗口可以计算用户输入的表达式值。 打开 菜单栏方式 快捷键Ctrl+Alt+I 窗口的使用 输入命令 大于号 (>) 作为新行提示符出现在“命令” 阅读全文

posted @ 2020-04-27 08:31 活着的虫子 阅读(704) 评论(0) 推荐(0) 编辑

2020年4月24日

Visual Studio调试器指南---Watch 1-4窗口

摘要: 当处于调试模式中断下,我们可以通过Watch窗口快速查看我们想观察的变量、表达式的值。 打开 通过菜单栏方式 通过代码窗口右键选中表达式/变量 快捷键先按Ctrl+Alt+W状态栏显示在按下数字键1,2,3,4显示对应的窗口 窗口使用 具体操作跟其他变量窗口操作一样。只是右键菜单多几个选项 Dele 阅读全文

posted @ 2020-04-24 08:22 活着的虫子 阅读(3196) 评论(0) 推荐(0) 编辑

2020年4月23日

Visual Studio调试器指南---QuickWatch窗口

摘要: 当处于调试模式中断下,我们可以通过QuickWatch窗口快速查看我们想观察的变量、表达式的值 打开 通过菜单栏方式 代码窗口右键方式 快捷键Shift+F9 窗口使用 Expression这里可以输入可计算表达式,也可以选择之前观察过的表达式。 ReeValuate重新计算,输入表达式点此按钮会进 阅读全文

posted @ 2020-04-23 08:33 活着的虫子 阅读(1224) 评论(0) 推荐(0) 编辑

2020年4月22日

Visual Studio调试器指南---Locals窗口

摘要: 当处于调试模式中断下,Locals窗口将自动显示变量。窗口里的变量是调试器自动添加的。 打开 通过菜单方式 快捷键Alt+4 窗口使用 在函数调用处,只显示函数的参数,进入函数体后,调试器会自动把所以变量加入 当某个变量是结构、类或数组时,可以点击左边的展开符号展开观察详细情况 双击“Value”列 阅读全文

posted @ 2020-04-22 08:30 活着的虫子 阅读(1096) 评论(0) 推荐(0) 编辑

2020年4月21日

Visual Studio调试器指南----Autos窗口

摘要: 当处于调试模式中断下,Autos窗口将自动显示变量。窗口里的变量是调试器自动添加的。 打开 通过菜单方式 快捷键先按下: Ctrl+Alt+V,此时VS状态栏显示如下消息 在按下A键 窗口使用 在单步调试模式下,往下走一步,窗口里的内容如下 当某个变量是结构、类或数组时,可以点击左边的展开符号展开观 阅读全文

posted @ 2020-04-21 08:05 活着的虫子 阅读(926) 评论(0) 推荐(0) 编辑

2020年4月20日

Windbg常用命令系列---显示线程时间(.ttime)

摘要: .ttime (Display Thread Times) ttime命令显示线程的创建时间,以及它在内核模式和用户模式下运行的时间。 .ttime 环境 Modes user mode only Targets live, crash dump Platforms x86 only 说明 此命令仅 阅读全文

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

2020年4月17日

零基础调试的方法

摘要: 毫无疑问,软件开发人员编写的代码并不总是按照预期行事。 有时它执行一些完全不同的操作! 发生这种情况时,下一个任务是找出原因。尽管我们可能会一直盯着代码看几个小时,但使用调试工具或调试程序会更轻松且更高效。 遗憾的是,调试程序无法神奇地揭示代码中的所有问题或“bug”。 调试意味着在 Visual 阅读全文

posted @ 2020-04-17 13:29 活着的虫子 阅读(334) 评论(0) 推荐(0) 编辑

2020年4月16日

Visual Studio调试器指南---编辑并继续的限制

摘要: 链接限制 “编辑并继续”有两种类型的链接器限制: 默认情况下,“编辑并继续”在调试会话结束时重新链接到程序,以创建最新的可执行文件。 自动重新链接方面有一些限制。 有些链接器选项禁用“编辑并继续”。 预编译头限制 默认情况下,“编辑并继续”在后台加载并处理预编译头,以加速对代码更改的处理。 加载预编 阅读全文

posted @ 2020-04-16 08:00 活着的虫子 阅读(372) 评论(0) 推荐(0) 编辑

2020年4月15日

Visual Studio调试器指南---编辑并继续不支持的情况

摘要: “编辑并继续”处理大多数类型的代码更改。 但是,在程序执行期间,某些更改无法应用。 若要应用这些更改,必须停止执行并生成新版本的代码。 不支持的方案 在以下调试方案中,“编辑并继续”不可用: 在 Windows 98 上调试。 混合模式(本机/托管)调试。 SQL 调试。 调试 Dr. Watson 阅读全文

posted @ 2020-04-15 08:11 活着的虫子 阅读(1054) 评论(0) 推荐(0) 编辑

2020年4月14日

Visual Studio调试器指南---“符号加载信息”对话框

摘要: 当处于调试状态时,"调试" >"窗口" >"模块" 右击**“模块”窗口并选择“符号加载信息”后,将打开“符号加载信息”**对话框。 信息 根据 Visual Studio 安装设置和在**“选项”**对话框中对符号设置所做的更改,显示搜索符号文件(PDB 文件)的目录。 符号设置 单击此按钮可更改 阅读全文

posted @ 2020-04-14 08:42 活着的虫子 阅读(529) 评论(0) 推荐(0) 编辑

2020年4月13日

Visual Studio调试器指南---“解决方案属性页”对话框 ->“通用属性”->“调试源文件”

摘要: 该属性页指定调试解决方案时调试器查找源文件的位置。 若要访问“调试源文件”属性页,右击“解决方案资源管理器”中的“解决方案”,并从快捷菜单中选择“属性”。 展开“通用属性”文件夹并单击“调试源文件”页。 包含源代码的目录 包含调试器在调试解决方案时搜索源文件的目录列表。 还可搜索指定目录的所有子目录 阅读全文

posted @ 2020-04-13 08:20 活着的虫子 阅读(906) 评论(0) 推荐(0) 编辑

2020年4月10日

关于STATUS_WX86_BREAKPOINT(0x4000001F)异常

摘要: 简介 STATUS_WX86_BREAKPOINT,值为0x4000001F,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言。其定义如下: /// MessageId: STATUS_WX86_BREAKPOINT//// MessageText://// Exception stat 阅读全文

posted @ 2020-04-10 08:53 活着的虫子 阅读(2886) 评论(0) 推荐(0) 编辑

2020年4月9日

Visual Studio调试器指南---异常助手

摘要: **“异常助手”**是一项用于调试 Visual Basic 和 C# 应用程序的功能。 **“异常助手”比其他语言(例如 C/C++)所使用的“异常”**对话框提供了更多有关异常的信息。这样便更易于查找异常原因并解决问题。 **“异常助手”**在发生运行时异常时出现,它显示异常的类型、故障排除提示 阅读全文

posted @ 2020-04-09 08:28 活着的虫子 阅读(333) 评论(0) 推荐(0) 编辑

2020年4月8日

“内存不足”不是指物理内存

摘要: 我开始在x86计算机上编程,当时英特尔处理器启用的内存管理策略发生了巨大而迅速的变化。不得不知道“扩展内存”和“扩展内存”之间的区别的痛苦随着时间的推移而逐渐消失,幸运的是,我的记忆中也有了确切的区别。作为早期经验的结果,我偶尔会惊讶于这样一个事实:许多专业程序员似乎对内存管理有着自“80286保护 阅读全文

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

2020年4月7日

使用.NET工具调试System.OutOfMemoryException

摘要: 在这篇文章中,我将讨论一个更棘手的异常:System.OutOfMemoryException。顾名思义,当.NET应用程序内存不足时抛出异常。有在MSDN文章中,OutOfMemoryException有两种不同的原因: 试图将StringBuilder对象扩展到其StringBuilder.Ma 阅读全文

posted @ 2020-04-07 08:10 活着的虫子 阅读(955) 评论(0) 推荐(0) 编辑

2020年4月3日

调试System.IO.FileNotFoundException-原因和修复

摘要: 今天,我想帮跟踪并修复一个非常常见且非常著名的异常:System.IO.FileNotFoundException。承认!在所有情况下,此错误都是由于尝试访问不存在的文件所致。但是,实际上有多种情况可以触发此异常。你可能认为你知道关于这个例外的一切,但我打赌你还有一些东西要学。至少我在深入了解这篇文 阅读全文

posted @ 2020-04-03 08:26 活着的虫子 阅读(48516) 评论(0) 推荐(0) 编辑

2020年4月2日

调试System.UnauthorizedAccessException(通常后跟:拒绝访问路径)

摘要: 今天,我要向您介绍System.UnauthorizedAccessException。异常通常是由IO错误引起的,但其他问题(如安全限制)也可以利用此错误。我们一起挖进去! 制造错误 捕捉异常非常简单。让我们创建一个小程序来触发和捕获此错误。在编写代码之前,我将创建一个名为c:\temp\read 阅读全文

posted @ 2020-04-02 09:28 活着的虫子 阅读(13887) 评论(0) 推荐(0) 编辑

2020年4月1日

调试System.AccessViolationException

摘要: System.AccessViolationException异常通常发生在非托管代码尝试从尚未分配的内存读取或写入内存时。 制造错误 捕捉异常并不像你想象的那么容易。让我们从一个简单处理System.AccessViolationException的示例开始。以下程序引发并捕获异常: class 阅读全文

posted @ 2020-04-01 08:46 活着的虫子 阅读(8826) 评论(5) 推荐(1) 编辑

2020年3月31日

调试System.AggregateException-即使在异步代码中也是如此

摘要: 顾名思义,AggregateException用于在单个异常中对一个或多个异常进行批处理。在本文中,我将向您展示为什么会发生此异常,以及如何在C代码中调试它。 错误的产生和处理 让我们从强制一个产生新的AggregateException开始。这个异常在.NET的任务库中被大量使用,为什么选择一个包 阅读全文

posted @ 2020-03-31 08:52 活着的虫子 阅读(3308) 评论(0) 推荐(0) 编辑

2020年3月30日

关于System.Exception

摘要: 什么是Exception? 表示在应用程序执行过程中发生的错误。 继承 Object Exception 说明 此类是所有异常的基类。 当发生错误时,系统或当前正在执行的应用程序会通过引发包含有关错误的信息的异常来报告该错误。 引发异常后,它由应用程序或默认异常处理程序进行处理。 Exception 阅读全文

posted @ 2020-03-30 09:04 活着的虫子 阅读(1590) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 19 下一页

导航