03 2020 档案

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

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

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

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

关于异常System.AggregateException
摘要:什么是AggregateException 又叫聚合异常。表示在应用程序执行过程中发生的一个或多个错误。 继承 Object Exception AggregateException 说明 AggregateException 用于将多个故障合并为单个 java.lang.throwable exc 阅读全文

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

Visual Studio调试器指南---项目属性调试页
摘要:这些属性页位于 "项目 > 属性 > " "配置属性 > " "调试" 下。 在下拉控件中选择 "调试器类型"。 "本地 Windows 调试器" 属性页 命令 要执行的调试命令。 命令参数 要传递给应用程序的命令行参数。 工作目录 应用程序的工作目录。 默认情况下,包含项目文件的目录。 Attac 阅读全文

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

Visual Studio调试器指南---选项对话框--->"调试"说明(三)
摘要:“选项”对话框 ->“调试”->“实时” 若要访问“实时”页,请转到“工具”菜单,然后单击“选项”。 在“选项”对话框中,展开“调试”节点并选择“实时”。 该页允许为托管代码、本机代码和脚本启用实时调试。 可以为以下程序类型启用实时调试: Managed 本机 字符集 实时调试是调试在 Visual 阅读全文

posted @ 2020-03-25 08:39 活着的虫子 阅读(519) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---选项对话框--->"调试"说明(二)
摘要:“选项”对话框 ->“调试”->“编辑并继续” 若要访问“编辑并继续”页,请打开“工具”菜单并选择“选项”。 在“选项”对话框中,展开“调试”文件夹并选择“编辑并继续”。 该页允许为“编辑并继续”设置下列选项。 启用“编辑并继续” 选定后,启用“编辑并继续”。 “编辑并继续”能够在程序处于中断模式( 阅读全文

posted @ 2020-03-24 11:35 活着的虫子 阅读(291) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---选项对话框--->"调试"说明(一)
摘要:“选项”对话框(“工具”菜单)中的“调试”文件夹提供以下页,可以使用它们指定调试器工具选项。下面详细说说。 “选项”对话框 ->“调试”->“常规” 若要访问“常规”页,请单击“工具”菜单并选择“选项”。 在“选项”对话框中,展开“调试”节点并选择“常规”。 该页可设置下列常规调试选项。 在删除所有 阅读全文

posted @ 2020-03-24 11:09 活着的虫子 阅读(1652) 评论(2) 推荐(2) 编辑

获取File Version 和Product Version
摘要:#include <stdio.h> #include <windows.h> #ifndef nullptr #define nullptr NULL #endif int _tmain(int argc, _TCHAR* argv[]) { if (argc > 1) { DWORD dwSiz 阅读全文

posted @ 2020-03-21 10:52 活着的虫子 阅读(1014) 评论(0) 推荐(0) 编辑

WinDbg文件关联和资源管理器上下文菜单
摘要:很长一段时间以来,我有一个注册表文件来为WinDbg创建上下文菜单项。这些条目允许您选择x86或x64调试器。在公司内部,我有另一个版本的注册表文件,其中包含了私有符号服务器的另外两个上下文菜单项。你可以在这个截图中看到我在内部添加的所有4个选项。 注意,注册表文件假定WinDBG安装在c:\调试器 阅读全文

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

Win10下装 VC6.0单步调试报((OLE32.DLL): 0xC0000005: Access Violation)
摘要:想在win10上重温下经典VC++6.0,结果单步调试时弹出个异常对话框,报((OLE32.DLL): 0xC0000005: Access Violation) 解决方法如下: 1、菜单 工具->选项 中的调试,反汇编下的来源注解取消 2、点确定保存设置,然后即可单步调试3、再将工具->选项 中的 阅读全文

posted @ 2020-03-20 11:54 活着的虫子 阅读(1063) 评论(0) 推荐(0) 编辑

WinDbg里查找线程栈的StackBase 和 StackLimit 的硬偏移
摘要:User Mode 32bit 0:000> dt nt!_TEB.Stack* ntdll!_TEB +0x000 NtTib : +0x004 StackBase : Ptr Void +0x008 StackLimit : Ptr Void User Mode 64bit 0:000> dt 阅读全文

posted @ 2020-03-20 09:49 活着的虫子 阅读(910) 评论(0) 推荐(0) 编辑

关于STATUS_STOWED_EXCEPTION(0xC000027B)异常
摘要:简介 STATUS_STOWED_EXCEPTION,值为0xC000027B。代表的意思是"发生应用程序内部异常"。它定义在 ntstatus.h头文件里,如下: /// MessageId: STATUS_STOWED_EXCEPTION//// MessageText://// An appl 阅读全文

posted @ 2020-03-19 11:55 活着的虫子 阅读(1493) 评论(0) 推荐(0) 编辑

windbg分析句柄泄漏常用命令和步骤
摘要:分析命令 1、!htrace -enble。 2、执行重现过程,让进程句柄泄漏 3、通过!htrace -diff 找出有问题的栈。 阅读全文

posted @ 2020-03-19 10:52 活着的虫子 阅读(594) 评论(0) 推荐(0) 编辑

关于STATUS_NO_MEMORY(0xC0000017)异常
摘要:简介 STATUS_NO_MEMORY,值为0xC0000017。代表的意思是"没有足够的虚拟内存或分页文件配额来完成指定的操作。"。它定义在 ntstatus.h头文件里,如下: /// MessageId: STATUS_NO_MEMORY//// MessageText://// {Not E 阅读全文

posted @ 2020-03-18 09:48 活着的虫子 阅读(1353) 评论(2) 推荐(0) 编辑

将SEH异常映射到NET异常
摘要:Win32 SEH异常也可以作为.NET异常捕获。在下面的代码中,托管函数(main)调用本机函数(f),该函数抛出SEH exception exception_INT_DIVIDE_BY_ZERO。大体上,这个异常是在处理System::ExceptionA类型异常的catch块中捕获的。 // 阅读全文

posted @ 2020-03-18 09:46 活着的虫子 阅读(240) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---多线程应用程序调试(三)
摘要:在本机代码中设置线程名称 在 Visual Studio 的任何版本中都可以使用线程命名功能。 当调试正在运行的进程时,线程命名有助于标识 "线程" 窗口中感兴趣的线程。 在通过故障转储检查并使用各种工具分析性能捕获时,具有 recognizably 命名的线程也会有所帮助。 设置线程名称的方法 可 阅读全文

posted @ 2020-03-17 11:20 活着的虫子 阅读(1115) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---多线程应用程序调试(二)
摘要:使用“并行堆栈”窗口:“线程”视图 在“调试”菜单上,单击“启动调试”。 等待命中第一个断点。 查看一个线程的调用堆栈 在“调试”菜单上指向“窗口”,然后单击“线程”。 将“线程”窗口停靠在 Visual Studio 底部。 在“调试”菜单上指向“窗口”,然后单击“调用堆栈”。 将“调用堆栈”窗口 阅读全文

posted @ 2020-03-17 09:56 活着的虫子 阅读(2187) 评论(0) 推荐(2) 编辑

Visual Studio调试器指南---多线程应用程序调试(一)
摘要:线程是操作系统向其授予处理器时间的指令序列。 在操作系统中运行的每个进程都包含至少一个线程。 包含多个线程的进程称为多线程。有多个处理器、多核处理器或超线程进程的计算机可以同时运行多个线程。 使用多个线程的并行处理可以极大地提高程序性能,但也可能导致调试变得更加困难,因为正在跟踪多个线程。 多线程处 阅读全文

posted @ 2020-03-17 08:37 活着的虫子 阅读(11780) 评论(1) 推荐(6) 编辑

Visual Studio调试器指南---Natvis 语法参考
摘要:AutoVisualizer 元素 AutoVisualizer 元素是 .natvis 文件的根节点,并包含命名空间 xmlns: 属性。 XML <?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schema 阅读全文

posted @ 2020-03-16 15:04 活着的虫子 阅读(2445) 评论(0) 推荐(1) 编辑

Visual Studio 调试器指南---自定义调试视图
摘要:在 Visual Studio 调试器中创建数据的自定义视图C++/C# 调试器提供了许多用于检查和修改程序状态的工具。 这些工具中的大多数仅在中断模式下有效。 在变量窗口和数据提示中创建数据的自定义视图 许多调试器窗口(如 "自动" 和 "监视" 窗口)都允许您检查变量。 您可以自定义C++类型、 阅读全文

posted @ 2020-03-16 13:40 活着的虫子 阅读(2308) 评论(0) 推荐(0) 编辑

Visual Studio调试指南---仅调试具有仅我的代码的用户代码
摘要:仅我的代码是一种 Visual Studio 调试功能,可自动执行对系统、框架和其他非用户代码的调用。 在 "调用堆栈" 窗口中,仅我的代码将这些调用折叠到 [外部代码] 帧中。在 .NET、 C++和 JavaScript 项目中,仅我的代码的工作方式有所不同。 启用或禁用“仅我的代码” 对于大多 阅读全文

posted @ 2020-03-16 09:27 活着的虫子 阅读(4126) 评论(0) 推荐(0) 编辑

Visual Studio调试技巧---Output窗口输出定位
摘要:在使用VC++时,经常使用OutputDebugString往往Output窗口写一些调试信息,如果输出信息遵循某种格式,那么在Output窗口中点击相应输出文本就会跳到相应的代码行中。具体格式MSDN中有说,简单的说法,在输出文本的最前面是"文件名(行号):"的格式就可以了。一个例子,用在我的内存 阅读全文

posted @ 2020-03-16 08:11 活着的虫子 阅读(1385) 评论(0) 推荐(0) 编辑

记一次因兼容性问题崩溃
该文被密码保护。

posted @ 2020-03-14 10:37 活着的虫子 阅读(1) 评论(0) 推荐(0) 编辑

Visual Studio调试托管代码
摘要:“输出”窗口中的诊断消息 可以使用 Debug 类或 Trace 类(属于 System.Diagnostics 类库)将运行时消息写到“输出”窗口。 如果只在程序的调试版本中输出,则使用 Debug 类。 如果要同时在调试版本和发布版本中输出,则使用 Trace 类。 输出方法 Trace 和 D 阅读全文

posted @ 2020-03-14 10:15 活着的虫子 阅读(692) 评论(0) 推荐(0) 编辑

Visual Studio调试本机代码
摘要:本文讲述本机应用程序的一些常见调试问题和调试技术。 本节阐述的技术属于高级别技术。 调试优化的代码 当编译器优化代码时,它将重新定位并重组指令, 这会得到更高效的编译的代码。 由于这种调整,调试器并不总能确定与一组指令对应的源代码。 优化可能影响到: 本地变量(可被优化器移除或移动到调试器无法识别的 阅读全文

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

Visual Studion调试器指南---编辑并继续
摘要:“编辑并继续”是一种省时的功能,使您能够在程序处于中断模式时更改源代码。 当您通过选择一条类似 Continue 或 Step 的执行命令继续执行程序时,“编辑并继续”有限制地自动应用代码更改。 这允许您在调试会话期间更改代码,而不是停止程序,重新编译整个程序,再重新启动调试会话。 显式应用代码更改 阅读全文

posted @ 2020-03-14 08:25 活着的虫子 阅读(2484) 评论(1) 推荐(0) 编辑

Visual Studio 调试器指南---调试器中的表达式
摘要:Visual Studio 调试器包括表达式计算器,当您在**“快速监视”对话框、“监视”窗口或“即时”窗口中输入表达式时,这些计算器可以对其进行计算。 这些表达式计算器还可以在“断点”**窗口和调试器中的许多其他位置使用。 常见的表达式计算器功能 试器中常见的各种表达式计算器功能,这些功能仅因语言 阅读全文

posted @ 2020-03-13 10:51 活着的虫子 阅读(1897) 评论(0) 推荐(0) 编辑

Visual Studio 调试器指南---查看调试器中的数据
摘要:Visual Studio 调试器提供了各种用于检查和修改程序状态的工具。 这些工具中的大多数仅在中断模式下有效。 DataTips 数据提示是用于在调试过程中查看程序中的变量和对象的有关信息的最方便工具之一。 在调试器处于中断模式时,可以在当前范围内查看变量的值,方法是将鼠标指针置于源窗口中的变量 阅读全文

posted @ 2020-03-13 10:17 活着的虫子 阅读(1438) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---断点和跟踪点
摘要:断点告诉调试器应用程序应该在某个点中断或暂停执行。当中断发生时,程序和调试器被称为处于中断模式。跟踪点是Visual Studio中的一个新调试器功能。跟踪点是具有与其关联的自定义操作的断点。当命中跟踪点时,调试器将执行指定的跟踪点操作,而不是中断程序执行。跟踪点的一个常见用途是在程序到达某个点时打 阅读全文

posted @ 2020-03-13 09:53 活着的虫子 阅读(3791) 评论(1) 推荐(0) 编辑

Visual Studio调试器指南---转储文件
摘要:转储文件(以前称为故障转储)使您能保存程序信息以供以后进行调试。 在没有源文件或符号文件的计算机上测试程序时,转储文件尤其有用。 发生崩溃时,可以先保存转储文件,以后在生成计算机或另一台具有源文件和调试符号的计算机上对其进行调试。 由 Visual Studio 保存和打开的转储文件使用名为小型转储 阅读全文

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

Visual Studio调试器指南---自动启动调试器
摘要:有时,可能需要调试由另一个进程启动的应用程序的启动代码。 这样的示例包括服务和自定义设置操作。 在这些情况下,可以让调试器在应用程序启动时启动并自动附加。 设置应用程序以自动启动调试器 启动注册表编辑器 (regedit)。 在“注册表编辑器”中打开 HKEY_LOCAL_MACHINE 文件夹。 阅读全文

posted @ 2020-03-12 13:36 活着的虫子 阅读(852) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---实时调试
摘要:在运行于 Visual Studio 之外的应用程序中发生异常或崩溃时,实时调试会自动启用 Visual Studio。 这样,您便可以在 Visual Studio 没有运行时测试应用程序,并在出现问题时利用 Visual Studio 开始调试。 实时调试不适用于在可视化工具等本机应用程序中承载 阅读全文

posted @ 2020-03-12 11:34 活着的虫子 阅读(4074) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---使用线程和进程
摘要:使用线程和进程是调试的重要组成部分。 Visual Studio 提供一个界面,在此界面中,可连接正在运行的待调试进程,可查看在那些进程中运行的附加进程和线程的有关信息,还可以控制正在调试的线程和进程的执行。 在计算机科学中,“线程”和“进程”是两个相关的概念。 二者都表示必须按特定顺序执行的指令序 阅读全文

posted @ 2020-03-12 10:24 活着的虫子 阅读(1262) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---控制执行
摘要:Visual Studio 调试器提供了功能强大的命令来控制应用程序的执行。 下面描述了为控制执行利用调试器命令可执行的任务: 开始(或继续)执行 中断执行 停止执行 逐句通过应用程序 运行到指定的位置 设置执行点 开始执行 开始执行是最基本的调试功能之一。 在“调试”菜单上选择“开始”、“逐语句” 阅读全文

posted @ 2020-03-12 08:35 活着的虫子 阅读(1394) 评论(0) 推荐(0) 编辑

又一次NULL指针崩溃的排查过程
该文被密码保护。

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

Visual Studio调试器指南---异常处理(调试)
摘要:异常是在程序运行时发生的不正常情况。 异常通常表示有需要调试的问题。 发生异常时,调试器将向“输出”窗口中写入一条异常消息,但在““选项”对话框 ->“调试”->“常规””对话框中禁用了该选项的情况除外。 发生异常时,调试器不一定会中断执行。 如果发生了非 ASP.NET 异常并且没有进行处理,调试 阅读全文

posted @ 2020-03-11 15:32 活着的虫子 阅读(7117) 评论(0) 推荐(1) 编辑

Visual Studio调试64位程序
摘要:使用 Visual Studio,您可以调试运行在本地计算机或远程计算机上的 64 位应用程序。如果进行本地调试,Visual Studio在 WOW64 下运行,WOW64 是允许 32 位 Windows 应用程序在 64 位 Windows 上运行的 32 位 x86 仿真程序。 只在 x64 阅读全文

posted @ 2020-03-11 14:07 活着的虫子 阅读(1257) 评论(0) 推荐(0) 编辑

Visual Studio调试器指南---还原隐藏的调试器命令
摘要:安装 Visual Studio 时,系统会要求您为主要的编程语言选择一组默认的 IDE 设置。 某些语言的默认 IDE 设置可能会隐藏某些调试器命令。如果要使用由默认 IDE 设置隐藏的调试器功能,可以使用以下过程将相应的命令重新添加到菜单中。 还原隐藏的调试器命令 在项目处于打开的状态下,在“工 阅读全文

posted @ 2020-03-11 11:42 活着的虫子 阅读(320) 评论(0) 推荐(0) 编辑

Visual Studio远程调试
摘要:Visual Studio 支持从一台计算机到另一台计算机的远程调试。 进行远程调试时,主机可以是任何支持 Visual Studio 的平台。 远程计算机可以是 32 位(Windows Vista、Windows 2000、Windows XP 或 Windows Server 2003)平台, 阅读全文

posted @ 2020-03-11 10:37 活着的虫子 阅读(1721) 评论(0) 推荐(1) 编辑

Visual Studio调试不属于解决方案的可执行文件
摘要:有时可能需要调试不属于 Visual Studio 项目的可执行文件。 它可能是在 Visual Studio 外部创建的可执行文件,也可能是从其他用户处接收到的可执行文件。解决此问题的常见方法是在 Visual Studio 外部启动可执行文件并使用 Visual Studio 调试器附加到该文件 阅读全文

posted @ 2020-03-11 08:42 活着的虫子 阅读(701) 评论(0) 推荐(1) 编辑

Visual Studio附加到运行进程
摘要:Visual Studio 调试器可以附加到在 Visual Studio 外运行的进程。 可以使用此附加功能执行以下操作: 调试并非在 Visual Studio 中创建的应用程序。 同时调试多个进程。 也可以通过在单个解决方案内启动多个项目来调试多个进程。 调试正在远程计算机上运行的进程。 调试 阅读全文

posted @ 2020-03-10 13:45 活着的虫子 阅读(10566) 评论(0) 推荐(3) 编辑

Visual Stdion在混合模式下调试(C#/C++)
摘要:本文描述如何调试托管代码和本机代码,这一过程也称作混合模式调试。 根据 DLL 或应用程序是否用本机代码编写,有两种方案可以用来进行调试: 调用 DLL 的调用应用程序是用本机代码编写的。 在这种情况下 DLL 是托管的,托管调试器和本机调试器都必须启用,以调试托管代码和本机代码。 可以在**“<P 阅读全文

posted @ 2020-03-10 10:29 活着的虫子 阅读(926) 评论(2) 推荐(0) 编辑

Visual Studio调试DLL项目
摘要:若要从 DLL 项目而不是从调用应用程序启动调试,必须在“<项目> 属性页”对话框或窗口中输入信息以指示 DLL 项目在何处才能找到调用应用程序。 C++“属性页”在布局和内容方面与 C# 和 Visual Basic“属性页”不同。请参考与项目语言相对应的过程。如果托管 DLL 由本机代码调用,并 阅读全文

posted @ 2020-03-10 09:40 活着的虫子 阅读(3012) 评论(0) 推荐(0) 编辑

破解PDB符号文件
摘要:微软以不断发明新的专有文件格式而闻名,而.pdb文件的程序数据库格式就是其中之一。许多软件开发人员都在拼命寻找关于PDB内部的更多信息。好消息:搜索结束了!本文将PDB格式记录到最后一位,并提供一个Win32实用程序,该实用程序将复合PDB文件拆分为单独的文件。软件开发和调试工具的编写人员经常面临着 阅读全文

posted @ 2020-03-10 08:46 活着的虫子 阅读(1805) 评论(0) 推荐(0) 编辑

Visual Studio调试器项目设置
摘要:某些项目设置也对调试产生影响。 这些设置确定诸如调试器查看的目录、用于启动程序的命令和命令参数以及为程序创建的调试信息的类型等内容。 可以在**“属性页”**对话框中更改这些设置。 本文介绍可用选项,并介绍如何进行设置。 如何:指定调试器设置 在 Visual Studio 中可为调试器行为指定各种 阅读全文

posted @ 2020-03-09 13:48 活着的虫子 阅读(9557) 评论(0) 推荐(1) 编辑

Debug.Assert Everyone!
摘要:每个开发人员都知道单元测试提高了代码的质量。我们还从静态代码分析中获益,并在我们的构建管道中使用SonarQube等工具。然而,我仍然发现许多开发人员并不知道检查代码有效性的一种更古老的方法:断言。在这篇文章中,我将向您介绍使用断言的好处,以及.NET应用程序的一些配置技巧。我们还将学习.NET和W 阅读全文

posted @ 2020-03-09 13:40 活着的虫子 阅读(1164) 评论(0) 推荐(0) 编辑

WinDbg中的.natvis文件和类型模板
摘要:在处理二进制数据时,我们经常使用dt命令将字节分组到有意义的字段中,例如。 0:000> dt ntdll!_PEB @$peb +0x000 InheritedAddressSpace : 0 '' +0x001 ReadImageFileExecOptions : 0 '' +0x002 Bei 阅读全文

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

已安装的.NET CLR版本之间的w3wp.exe崩溃WinDbg后期调试
摘要:本文概述了从生成进程的内存转储、在一台计算机上运行某个版本的CLR到将转储加载到在另一台计算机上运行的WinDbg所涉及的步骤。在WinDbg中,我们希望加载SOS调试器扩展来查询转储。具体来说,即使WinDbg机器没有安装运行转储进程的机器所安装的CLR版本,SOS也应该加载。 步骤1:生成进程转 阅读全文

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

用于DLL注入的WinDbg扩展---!injectdll
摘要:今天我很高兴向您介绍我的第一个WinDbg扩展lld,目前它只包含一个命令:!inject DLL,它允许您将DLL注入正在调试的进程。sdbgext扩展中有一个类似的命令,但它只适用于32位进程。用法非常简单——只要记住以正确的位加载扩展(32位进程的32位版本)。示例会话可能如下所示: 0:00 阅读全文

posted @ 2020-03-07 09:56 活着的虫子 阅读(666) 评论(0) 推荐(0) 编辑

Wireshark中PIDs与网络包的关联
摘要:默认情况下,在Wireshark中记录跟踪时,在其中找不到进程id。有时这些信息对于调查你所面临的问题是必要的。我这周碰到了这样的一个问题。我需要在虚拟机(本地地址10.0.2.5)上找到一个进程,该虚拟机仍在使用TLSv1连接到我们的负载平衡器。起初,我只在Wireshark中记录了跟踪并对其进行 阅读全文

posted @ 2020-03-07 09:43 活着的虫子 阅读(1397) 评论(0) 推荐(0) 编辑

又又一款抓dmp工具---ProcDump
摘要:简介 ProcDump是一个命令行实用程序,其主要目的是监视应用程序的CPU峰值,并在峰值期间生成崩溃转储,管理员或开发人员可以使用该转储来确定峰值的原因。ProcDump还包括挂起窗口监视(使用与Windows和任务管理器使用的相同的窗口挂起定义)、未处理的异常监视,并且可以基于系统性能计数器的值 阅读全文

posted @ 2020-03-07 09:17 活着的虫子 阅读(4216) 评论(0) 推荐(1) 编辑

基于.NET框架版本在Windbg中加载sos的脚本
摘要:我经常在windbg中调试.netframeworkv2.0/v 4.0代码。在v 2.0中,主clr dll称为“mscorwks.dll”,在v 4.0中称为“clr.dll”。很多人都知道,要在v 2.0中加载sos,我们必须输入“.loadby sos mscorwks”,在v 4.0中输入 阅读全文

posted @ 2020-03-07 08:35 活着的虫子 阅读(280) 评论(0) 推荐(0) 编辑

未记录的WinDBG扩展命令---itoldyouso
摘要:DBGHELP.DLL中有一些文档化的WinDBG扩展命令,例如!sym and !dh,分别设置符号加载诊断和转储模块PE头。看到itoldyouso是小写的,我不禁怀疑它是否是一个未经文档化的WinDBG扩展命令。启动WinDBG并输入!itoldyouso,产生了以下结果: 0:000> !i 阅读全文

posted @ 2020-03-06 14:54 活着的虫子 阅读(346) 评论(0) 推荐(0) 编辑

合并符号服务器
摘要:保护总是好的,公司有两台符号服务器。其中一个已不再使用,但为以前发布的项目保留了符号。因为PDB文件和源代码一样重要,所以想知道是否有办法将符号服务器合并在一起。 由于符号服务器是用作数据库的文件系统,存储方案为\ServerShareFile.PDBGUIDFile.PDB,因此可以将资源管理器中 阅读全文

posted @ 2020-03-06 14:50 活着的虫子 阅读(260) 评论(0) 推荐(0) 编辑

CLR 运行时版本和错误0x80131700和0x80113101B
摘要:COM可见的.Net对象由标准COM调用实例化,例如CoCreateInstance。COM在注册表或激活上下文中找到CLSID,加载并调用mscoree.dll,该dll继续激活CLR和创建对象的过程。在此过程中,可能会出现错误0x80131700“未能加载运行时”或0x8013101b“此程序集 阅读全文

posted @ 2020-03-06 13:56 活着的虫子 阅读(1175) 评论(0) 推荐(0) 编辑

关于 CLR 内核异常----COR_E_NEWER_RUNTIME(0x8013101B)
摘要:简介 COR_E_NEWER_RUNTIME,值为0x8013101B,代表的意思是"程序集是由比当前加载的运行时新的运行时生成的,因此无法加载。".它定义在cli-2.0-master\clr\src\inc\corerror.h文件里,如下: #define COR_E_NEWER_RUNTIM 阅读全文

posted @ 2020-03-06 13:41 活着的虫子 阅读(310) 评论(0) 推荐(0) 编辑

如何查看当前加载的SOS.dll版本?
摘要:要查看SOS.dll版本,必然是Windbg已经加载了该文件。在这个前提下输入下面的命令: !eeversion 例如: 0:000> !eeversion4.0.30319.36543 retailWorkstation modeSOS Version: 4.0.30319.36543 retai 阅读全文

posted @ 2020-03-05 17:27 活着的虫子 阅读(422) 评论(0) 推荐(0) 编辑

WinDbg中的“中断指令异常”是什么?
摘要:当你在分析一些dmp文件时,可能会发现下面的异常信息: 0:000> .exr -1 ExceptionAddress: 00000000 ExceptionCode: 80000003 (Break instruction exception) ExceptionFlags: 00000000 N 阅读全文

posted @ 2020-03-05 14:26 活着的虫子 阅读(2664) 评论(0) 推荐(1) 编辑

异常STATUS_INVALID_PARAMETER(0xC000000D)
摘要:简介 STATUS_INVALID_PARAMETER,值为0xC000000D。代表的意思是把一个无效的参数传递给了服务或函数(这里的服务是指Windows系统自身的服务,函数是指Windows系统内核函数)。它定义在 ntstatus.h头文件里,如下: //// MessageId: STAT 阅读全文

posted @ 2020-03-05 11:29 活着的虫子 阅读(2972) 评论(0) 推荐(0) 编辑

记一次CLR exception(e0434352)---System.IO.FileNotFoundException的排查
该文被密码保护。

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

从WER已经抓取的进程中获取良好的小型转储
摘要:如果您有一个WER处理过的崩溃进程,但您知道JIT调试器设置错误,或者根本没有设置(因此崩溃对话框上没有“调试”按钮),则可以保持对话框打开,并将您选择的任何调试器附加到挂起的崩溃进程。不过,有个问题。通过将调试器附加到挂起的进程,进程的最后异常信息已丢失;这是因为调试器成功附加到挂起(或挂起)进程 阅读全文

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

关于System.IO.FileNotFoundException异常
摘要:什么是FileNotFoundException? 尝试访问磁盘上不存在的文件失败时引发的异常。如果你的代码没有 PathDiscovery 的权限,则此异常的错误消息可能只包含文件或目录名称,而不是完全限定的路径。 继承 Object Exception IOException FileNotFo 阅读全文

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

导致System.ExecutionEngineeException异常可能的原因
摘要:我一直想知道更多关于这个问题的信息,但运气不太好。我一直在读,应用程序不应该出现这个错误,它不告诉我什么可以导致这个错误出现。我知道这个问题非常宽泛,因为我确信这个错误可能有多种原因,所以我会尽量缩小范围。我在VS2015中开发了一个使用C++ .NET的应用程序。应用程序主要使用非托管代码,很少使 阅读全文

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

如何知道80000003断点后是否隐藏了其他异常(WER对话框)
摘要:我的应用程序,一个可执行文件,正在远程计算机上崩溃。我没有访问那台机器的权限,所以我请求了一个转储,通过任务管理器生成。使用WEBBG,在执行命令!analyze -v时,我可以看到许多其他的文本 EXCEPTION_RECORD: (.exr -1) ExceptionAddress: 00000 阅读全文

posted @ 2020-03-03 14:12 活着的虫子 阅读(1523) 评论(0) 推荐(0) 编辑

AeDebug中的“Ae”代表什么?
摘要:用于配置应用程序崩溃自动调试的注册表项的名称是AeDebug。好吧,很明显“Debug”代表什么,但是“Ae”代表什么? 我无法证明,但间接证据表明AE代表“应用程序错误”。对话框的标题最初是“应用程序错误”。这里有这样的评论: // This fixes the AE (application e 阅读全文

posted @ 2020-03-02 14:53 活着的虫子 阅读(618) 评论(0) 推荐(0) 编辑

异常的保护机制
摘要:以栈作为基础的SEH本身具有很大的危险性,我们可以利用各种手段对栈上SEH节点进行覆盖重写,再次执行异常处理操作时就会将执行权给到了我们用来覆盖的函数上,这实际上在以前是很常见的windows栈溢出手段,当然,除了这种方法外还有许许多多的利用手段,可见这样的异常处理机制还是不够完善的。为了解决这些问 阅读全文

posted @ 2020-03-02 11:42 活着的虫子 阅读(720) 评论(0) 推荐(0) 编辑

硬件异常分类
摘要:硬件异常可以分为三种: fault(错误),在处理此类异常时,操作系统会将遭遇异常时的“现场”保存下来(比如EIP、CS等寄存器的值),然后将调用相应的异常处理函数,如果对异常的处理成功了(没成功的情况会在下文中提到),那就恢复到原始现场,继续执行。最经典的fault例子莫过于Page Fault了 阅读全文

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

导航