摘要:除了在调试会话中检测变量的内容外,还应仔细评估代码的逻辑,确保所有代码按期望的顺序执行。Vsual Studio提供一组窗口,他们显示了暂停程序执行时所加载和执行的代码。这样就可以更好的理解代码的运行时行为,快速找出逻辑错误。 这些窗口有Call Stack窗口、Threads窗口、Moduls窗口
阅读全文
摘要:在“监视”、“自动”和“局部变量”窗口中,可以使用格式说明符更改值显示的格式。还可以在即时窗口、命令窗口、跟踪点甚至源窗口中使用格式说明符。如果在这些窗口中暂停,表达式结果将显示在数据提示中。数据提示根据格式说明符显示。 设置格式说明符 我们将使用下面的示例代码: int main() { int
阅读全文
摘要:在编写代码或调试应用程序时,为了测试某个功能或者显示应用程序的工作状态,经常需要计算简单表达式的值。使用Immediate窗口可以很方便地实现这种操作。该窗口可以计算用户输入的表达式值。 打开 菜单栏方式 快捷键Ctrl+Alt+I 窗口的使用 输入命令 大于号 (>) 作为新行提示符出现在“命令”
阅读全文
摘要:当处于调试模式中断下,我们可以通过Watch窗口快速查看我们想观察的变量、表达式的值。 打开 通过菜单栏方式 通过代码窗口右键选中表达式/变量 快捷键先按Ctrl+Alt+W状态栏显示在按下数字键1,2,3,4显示对应的窗口 窗口使用 具体操作跟其他变量窗口操作一样。只是右键菜单多几个选项 Dele
阅读全文
摘要:当处于调试模式中断下,我们可以通过QuickWatch窗口快速查看我们想观察的变量、表达式的值 打开 通过菜单栏方式 代码窗口右键方式 快捷键Shift+F9 窗口使用 Expression这里可以输入可计算表达式,也可以选择之前观察过的表达式。 ReeValuate重新计算,输入表达式点此按钮会进
阅读全文
摘要:当处于调试模式中断下,Locals窗口将自动显示变量。窗口里的变量是调试器自动添加的。 打开 通过菜单方式 快捷键Alt+4 窗口使用 在函数调用处,只显示函数的参数,进入函数体后,调试器会自动把所以变量加入 当某个变量是结构、类或数组时,可以点击左边的展开符号展开观察详细情况 双击“Value”列
阅读全文
摘要:当处于调试模式中断下,Autos窗口将自动显示变量。窗口里的变量是调试器自动添加的。 打开 通过菜单方式 快捷键先按下: Ctrl+Alt+V,此时VS状态栏显示如下消息 在按下A键 窗口使用 在单步调试模式下,往下走一步,窗口里的内容如下 当某个变量是结构、类或数组时,可以点击左边的展开符号展开观
阅读全文
摘要:.ttime (Display Thread Times) ttime命令显示线程的创建时间,以及它在内核模式和用户模式下运行的时间。 .ttime 环境 Modes user mode only Targets live, crash dump Platforms x86 only 说明 此命令仅
阅读全文
摘要:毫无疑问,软件开发人员编写的代码并不总是按照预期行事。 有时它执行一些完全不同的操作! 发生这种情况时,下一个任务是找出原因。尽管我们可能会一直盯着代码看几个小时,但使用调试工具或调试程序会更轻松且更高效。 遗憾的是,调试程序无法神奇地揭示代码中的所有问题或“bug”。 调试意味着在 Visual
阅读全文
摘要:链接限制 “编辑并继续”有两种类型的链接器限制: 默认情况下,“编辑并继续”在调试会话结束时重新链接到程序,以创建最新的可执行文件。 自动重新链接方面有一些限制。 有些链接器选项禁用“编辑并继续”。 预编译头限制 默认情况下,“编辑并继续”在后台加载并处理预编译头,以加速对代码更改的处理。 加载预编
阅读全文
摘要:“编辑并继续”处理大多数类型的代码更改。 但是,在程序执行期间,某些更改无法应用。 若要应用这些更改,必须停止执行并生成新版本的代码。 不支持的方案 在以下调试方案中,“编辑并继续”不可用: 在 Windows 98 上调试。 混合模式(本机/托管)调试。 SQL 调试。 调试 Dr. Watson
阅读全文
摘要:当处于调试状态时,"调试" >"窗口" >"模块" 右击**“模块”窗口并选择“符号加载信息”后,将打开“符号加载信息”**对话框。 信息 根据 Visual Studio 安装设置和在**“选项”**对话框中对符号设置所做的更改,显示搜索符号文件(PDB 文件)的目录。 符号设置 单击此按钮可更改
阅读全文
摘要:该属性页指定调试解决方案时调试器查找源文件的位置。 若要访问“调试源文件”属性页,右击“解决方案资源管理器”中的“解决方案”,并从快捷菜单中选择“属性”。 展开“通用属性”文件夹并单击“调试源文件”页。 包含源代码的目录 包含调试器在调试解决方案时搜索源文件的目录列表。 还可搜索指定目录的所有子目录
阅读全文
摘要:简介 STATUS_WX86_BREAKPOINT,值为0x4000001F,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言。其定义如下: /// MessageId: STATUS_WX86_BREAKPOINT//// MessageText://// Exception stat
阅读全文
摘要:**“异常助手”**是一项用于调试 Visual Basic 和 C# 应用程序的功能。 **“异常助手”比其他语言(例如 C/C++)所使用的“异常”**对话框提供了更多有关异常的信息。这样便更易于查找异常原因并解决问题。 **“异常助手”**在发生运行时异常时出现,它显示异常的类型、故障排除提示
阅读全文
摘要:我开始在x86计算机上编程,当时英特尔处理器启用的内存管理策略发生了巨大而迅速的变化。不得不知道“扩展内存”和“扩展内存”之间的区别的痛苦随着时间的推移而逐渐消失,幸运的是,我的记忆中也有了确切的区别。作为早期经验的结果,我偶尔会惊讶于这样一个事实:许多专业程序员似乎对内存管理有着自“80286保护
阅读全文
摘要:在这篇文章中,我将讨论一个更棘手的异常:System.OutOfMemoryException。顾名思义,当.NET应用程序内存不足时抛出异常。有在MSDN文章中,OutOfMemoryException有两种不同的原因: 试图将StringBuilder对象扩展到其StringBuilder.Ma
阅读全文
摘要:今天,我想帮跟踪并修复一个非常常见且非常著名的异常:System.IO.FileNotFoundException。承认!在所有情况下,此错误都是由于尝试访问不存在的文件所致。但是,实际上有多种情况可以触发此异常。你可能认为你知道关于这个例外的一切,但我打赌你还有一些东西要学。至少我在深入了解这篇文
阅读全文
摘要:今天,我要向您介绍System.UnauthorizedAccessException。异常通常是由IO错误引起的,但其他问题(如安全限制)也可以利用此错误。我们一起挖进去! 制造错误 捕捉异常非常简单。让我们创建一个小程序来触发和捕获此错误。在编写代码之前,我将创建一个名为c:\temp\read
阅读全文
摘要:System.AccessViolationException异常通常发生在非托管代码尝试从尚未分配的内存读取或写入内存时。 制造错误 捕捉异常并不像你想象的那么容易。让我们从一个简单处理System.AccessViolationException的示例开始。以下程序引发并捕获异常: class
阅读全文