摘要:分析是一种强大的VisualC++特性,可以帮助发现bug。然而,它使用了一些相当奇特的启发式方法,这使得很难决定如何认真对待它的警告。今天我们将讨论其中一种特殊的启发式方法,并展示一个案例,其中/analyze是完全错误的。这些特殊的警告大多在VS2012中修复。在我与微软分享的repro项目中,
阅读全文
摘要:Visual C++编译器的分析功能是提高代码质量的一个好方法。它基本上是一个21世纪的“lint”来识别许多编码错误。许多错误对于程序员来说是很难看到的,但是,通过对代码进行适当的注释,/analyze的不屈不挠的眼睛将可靠地找到它们。我最近在一个大型代码库上使用/analyze,发现了大约500
阅读全文
摘要:符号服务器允许Windows上的开发人员工具自动查找符号。他们做得很好,以至于大多数开发人员都不必担心内部机制。然而,当事情出了问题时,了解它们是如何工作的是有帮助的,事实证明,这一切都非常简单。 我对Windows符号服务器的讨论利用了我笔记本电脑上的符号服务器,用于我自己的个人项目。每当我发布一
阅读全文
摘要:这是一个相当简单的错误。使用字节计数而不是字符计数调用了宽字符串函数,从而导致缓冲区溢出。找到问题后,修复方法很简单,只需将sizeof更改为_countof,很容易的。但像这样的BUG浪费时间。由于崩溃,playtest被取消了,而且由于缓冲区溢出破坏了堆栈,因此找到错误代码并非易事。我知道这种类
阅读全文
摘要:Windows允许您为进程中的线程指定名称,然后调试器可以显示这些名称。这是一个很好的解决方案,但这是一个很好的解决方案。Windows 10 Creators更新(SetThreadDescription)中添加了一个新的线程命名API。Chrome现在使用SetThreadDescription
阅读全文
摘要:因为要频繁地使用windbg分析堆栈、参数、以及内存状态,但是windbg的界面跟OD、IDA差距是很大的, 对于漏洞分析或者其它用途来说,用它来分析堆栈、内存是很不方便的,需要多次手工输入命令。 为了简化分析工作,自己闲着蛋疼的时候写了两个脚本来增强windbg的这些功能。 准备:下载以下脚本kr
阅读全文
摘要:了解如何调试是每个应用程序开发生命周期的一个关键方面。通过调试,开发人员不仅可以识别出发生了异常,还可以系统地遍历应用程序的执行,直到找到并修复罪魁祸首代码。无论解决方案是否需要修复一个小的错误,甚至需要重写系统中的大量组件,只要有足够的时间和人力,简单的调试操作就可以(最终)解决几乎所有问题。然而
阅读全文
摘要:简介 STATUS_PRIVILEGED_INSTRUCTION 应用程序执行了特权指令,值为0xC0000096。其定义如下: //// MessageId: STATUS_PRIVILEGED_INSTRUCTION//// MessageText://// {EXCEPTION}// Priv
阅读全文
摘要:简介 RPC_NT_INVALID_STRING_BINDING即无效的字符串绑定,值为0xC0020001。其定义如下: /// MessageId: RPC_NT_INVALID_STRING_BINDING//// MessageText://// The string binding is
阅读全文
摘要:当调用 StringBuilder.Insert 方法 尝试增加 StringBuilder 对象的长度超出其 StringBuilder.MaxCapacity 属性指定的大小。 下面的示例演示了在示例尝试插入将导致对象的 Length 属性超过其最大容量的字符串时,调用 StringBuilde
阅读全文
摘要:尽管可以使用COMException类向非托管客户端返回特定的HRESULT,但引发特定的.NET Framework异常比使用泛型异常要好。考虑到托管客户端和非托管客户端都可以使用.NET Framework对象,向托管调用方抛出HRESULT比引发异常更难理解。 以下是对COMException
阅读全文
摘要:COM方法通过返回HRESULT报告错误;.NET方法通过引发异常来报告错误。运行时处理两者之间的转换。.NET Framework中的每个异常类都映射到一个HRESULT。用户定义的异常类可以指定任何适合的HRESULT。这些异常类可以通过在异常对象上设置HRESULT字段来动态更改生成异常时返回
阅读全文
摘要:简介 STATUS_IN_PAGE_ERROR 页内故障,这是当Windows尝试从内存映射文件将数据读入RAM并发生阻止数据读取的I / O错误时发生的非常低级别的错误。当它发生在.exe时,如setup.exe程序,这是一个致命的错误,因为它无法执行无法读取的代码。表示0x%p处的指令引用了位于
阅读全文
摘要:什么是System.Runtime.InteropServices.COMException 从COM方法调用返回无法识别的HRESULT时引发的异常。 继承关系 Object Exception SystemException ExternalException COMException 说明 公
阅读全文
摘要:什么是System.OutOfMemoryException 当没有足够的内存继续执行程序时引发的异常。 继承关系 Object Exception SystemException OutOfMemoryException 说明 OutOfMemoryException异常有两个主要原因: 您正试图
阅读全文
摘要:如名称的Win32部分所示System.ComponentModel.Win32Exception仅在处理传统样式的应用程序或代码时发生-应用程序必须调用直接操作系统调用,例如尝试执行其他应用程序。在本文中,我们将深入探讨System.ComponentModel.Win32异常。更详细地说,包括它
阅读全文
摘要:支持的同事反应,前端某用户使用系统时,在登录页面点击输入文本框,会崩溃。抓取到一个dmp文件 打开Windbg 加载该dmp Windows 10 Version 18362 MP (12 procs) Free x86 compatibleProduct: WinNt, suite: Single
阅读全文
摘要:什么是Win32Exception 就是封装了Win32 Error Code的异常。也就是GetLastError返回的值。Win32错误代码在显示时从其数字表示形式转换为系统消息。使用NativeErrorCode访问与此异常关联的错误代码的数字表示形式 继承关系 Object Exceptio
阅读全文
摘要:MFC里的CMemoryException异常就是表示内存不足的情况。不需要或不可能进一步限定。内存异常由new自动抛出。例如,如果您使用malloc编写自己的内存函数,那么您将负责抛出内存异常。 不要直接使用此构造函数,而是调用全局函数AfxThrowMemoryException。此全局函数在内
阅读全文