2023年12月8日

关于异常HOST_E_EXITPROCESS_TIMEOUT

摘要: 简介 HOST_E_EXITPROCESS_TIMEOUT,是指在.NET应用程序中,Host进程超时导致退出的错误状态。它不是定义在ntstatus.h,而是clr的状态。定义在coreclr/src/pal/prebuilt/inc/corerror.h头文件中。 #define HOST_E_ 阅读全文

posted @ 2023-12-08 09:42 活着的虫子 阅读(24) 评论(0) 推荐(0) 编辑

2023年11月21日

umdh工具使用简介

摘要: UMDH(User-Mode Dump Heap)是一个用于调试和分析内存泄漏的工具。它是微软提供的一种 Windows 调试工具,可帮助开发人员找出应用程序中的内存泄漏问题。 UMDH 的工作原理是基于堆分配的内存跟踪。它通过监测应用程序的堆分配和释放操作,生成一系列堆快照(Heap Snapsh 阅读全文

posted @ 2023-11-21 17:02 活着的虫子 阅读(171) 评论(0) 推荐(0) 编辑

2023年10月17日

Dbg vs. Pdb files

摘要: .Dbg Dbg 文件是一种专门用于调试器的文件格式,它存储了程序的调试信息。以下是关于 Dbg 文件格式的一些详细信息: 调试信息类型:Dbg 文件包含了与程序相关的调试信息,如符号表、断点信息、源代码行号信息、变量和表达式的值等。 文件结构:Dbg 文件的具体结构会根据使用的调试器和操作系统而有 阅读全文

posted @ 2023-10-17 09:01 活着的虫子 阅读(125) 评论(1) 推荐(0) 编辑

2023年8月26日

字符集

摘要: 系统环境操作系统 Windows本地字符集(MBCS) GBK编译器: VC8、VC6、DEV-C++(gcc)实验字符‘我’GBK 字符编码 0xD2CEUNICODE 字符编码 0x6211‘a’GBK 字符编码 0x61UNICODE 字符编码 0x0061 一、源代码层面 VC81. 文件首 阅读全文

posted @ 2023-08-26 10:59 活着的虫子 阅读(61) 评论(0) 推荐(0) 编辑

2023年7月12日

SOS扩展系列-一些功能

摘要: 大家好。这里有一个关于!gchandleleaks和windbg中的托管断点。WINDOWH.EXE(代码如下)-来自一个示例应用程序,该应用程序演示了如何调用EnumWindows。我修改了它以循环方式运行,但是每次都忘记释放一个gc句柄。随着时间的推移,这将导致gc堆增长,最终耗尽内存。对于本文 阅读全文

posted @ 2023-07-12 13:48 活着的虫子 阅读(54) 评论(0) 推荐(0) 编辑

2023年6月9日

关于异常STATUS_DEVICE_HARDWARE_ERROR(0x0xC0000483)

摘要: 简介 STATUS_DEVICE_HARDWARE_ERROR表示硬件设备发生错误。值为0xC0000483,定义如下: //// MessageId: STATUS_DEVICE_HARDWARE_ERROR//// MessageText://// The request failed due 阅读全文

posted @ 2023-06-09 09:55 活着的虫子 阅读(110) 评论(0) 推荐(0) 编辑

2023年5月6日

32位进程设置大地址(3G)空间

摘要: 对应32位应用,我们不做任何设置,我们能用的地址空间其实不足2G,有两种方式设置大地址空间: 一、设置链接选项 二、工具editbin 1.开启方法 (1)利用管理员身份运行”Visual Studio 工具命令提示”程序; (2)输入命令:editbin /LARGEADDRESSAWARE D: 阅读全文

posted @ 2023-05-06 10:17 活着的虫子 阅读(208) 评论(0) 推荐(0) 编辑

2023年4月4日

Fail Fast 代码

摘要: 当Windows遇到可能危及计算机安全的错误情况时,遇到该情况的程序会尽快终止。这是通过快速故障机制完成的。你不能重新定义它,也不能将它从用户模式代码中挂钩。在x86/x64上,它被实现为一个中断调用,在内核内部处理。这些代码的定义在winnt.h中 Definition Value Comment 阅读全文

posted @ 2023-04-04 13:55 活着的虫子 阅读(120) 评论(0) 推荐(0) 编辑

2023年3月4日

迷失的this指针

摘要: 在调试客户崩溃dmp文件时,已经恢复了异常栈,需要查看当前的对象,但是this指针如下 很明显,这个值不对,ecx指针的值被修改做它用了。没关系,可以查看函数汇编,看看this指针保存在哪儿了,一般是栈上,找到这个地址就可以了,于是 由上图可知,ecx显示给了esi,esi又放到栈上esp+14h处 阅读全文

posted @ 2023-03-04 10:26 活着的虫子 阅读(71) 评论(0) 推荐(2) 编辑

2023年2月3日

关于STATUS_STACK_OVERFLOW异常

摘要: 简介 STATUS_STACK_OVERFLOW 无法为堆栈创建新的保护页。通常情况下就是线程栈爆掉了。一般是发生了无穷递归或栈里用过大的内存导致。其值0xC00000FD。定义如下: //// MessageId: STATUS_STACK_OVERFLOW//// MessageText:/// 阅读全文

posted @ 2023-02-03 14:54 活着的虫子 阅读(1282) 评论(0) 推荐(0) 编辑

2023年1月5日

判断线程栈爆掉的一种方法

摘要: 就是TEB::StackBase-TEB::StackLimit的值约为线程栈保留大小(VC++编译器默认的是1M),就可以判断栈 爆掉了。 比如: !tebTEB at 01192000 ExceptionList: 0120134c StackBase: 01300000 StackLimit: 阅读全文

posted @ 2023-01-05 10:59 活着的虫子 阅读(158) 评论(0) 推荐(1) 编辑

2022年12月3日

Windbg提示:*** WARNING: Unable to verify checksum for 的处理

摘要: 当我们用windbg调试时,经常会遇到“*** WARNING: Unable to verify checksum for xxx.dll”这样的提示,他的意思时不能校验某某模块的校验和。这一般都是我们的动态库或exe的校验和没有设置。可以做如下两种处理: 1、在VS里修改配置,重新生成 2、使用 阅读全文

posted @ 2022-12-03 08:39 活着的虫子 阅读(1700) 评论(0) 推荐(0) 编辑

2022年11月9日

关于异常DBG_TERMINATE_PROCESS(0x40010004)

摘要: 简介 DBG_TERMINATE_PROCESS表示进程被调试器终止。值为0x40010004。其定义如下: //// MessageId: DBG_TERMINATE_PROCESS//// MessageText://// Debugger terminated process.//#defin 阅读全文

posted @ 2022-11-09 19:22 活着的虫子 阅读(232) 评论(0) 推荐(0) 编辑

2022年10月8日

WIN32错误知识补充

摘要: 通过《Win32 Error》、《COM Error HRESULT 》和《NTSTATUS》等我们知道了一些win32错误基础知识,下面我们说点其他的东西。 1、GetLastError()返回一个winapi错误代码.从1开始的简单数字.它们通常从底层本机api错误代码映射。Winapi错误代码 阅读全文

posted @ 2022-10-08 13:17 活着的虫子 阅读(261) 评论(0) 推荐(0) 编辑

2022年9月28日

在VS里观察LastError

摘要: 系统API或COM调用,会产生错误。设置一个错误代码,可以由GetLastError检索。有几种方法可以破译此代码: 使用命令行 net helpmsg 从VS菜单中,选择工具/错误查找并粘贴代码 在VS的监视窗口上输入“$err,hr”! 在VS的监视窗口上输入 *(int*)(@tib+0x34 阅读全文

posted @ 2022-09-28 09:27 活着的虫子 阅读(125) 评论(0) 推荐(0) 编辑

2022年8月20日

VS IDE里查看环境变量

摘要: 用$env 阅读全文

posted @ 2022-08-20 09:09 活着的虫子 阅读(97) 评论(0) 推荐(0) 编辑

2022年7月11日

调试器启动进程和附加进程的一点儿差别

摘要: 当我们的程序出了问题,想要观察程序的执行过程,这时有两种进入调试的方式: 附加到进程 调试器启动进程 这是我们常用的两种方式,那么有什么差别呢?有差别,今天我就谈一点:那就是堆内存的不同。通过附加到进程的方式(排除用其他工具做了设置)内存是标准堆;而直接用调试器启动的方式内存是系统调试堆。 我们用W 阅读全文

posted @ 2022-07-11 15:03 活着的虫子 阅读(248) 评论(0) 推荐(0) 编辑

2022年6月6日

Portable PDB简介

摘要: .NET引入了一种新的符号文件(PDB)格式——Portable PDB。与仅限Windows的传统PDB不同,Portable PDB可以在所有平台上创建和读取。 对于任何不熟悉PDB文件的人来说,PDB文件是由编译器生成的辅助文件,用于提供其他工具,尤其是调试器,有关可执行文件中的内容以及如何生 阅读全文

posted @ 2022-06-06 08:55 活着的虫子 阅读(223) 评论(0) 推荐(0) 编辑

2022年5月12日

Windbg里识别CRT堆(拾遗)

摘要: 在《Windbg里识别CRT堆》一文里,介绍了可以通过msvcrXX.dll!_crtheap来获取crt堆的句柄。但这种方法只针对VS2015前的crt版本有效。 这是因为从 Visual Studio .NET 到 Visual Studio 2013,C++ 编译器和工具的每个主版本都包含一个 阅读全文

posted @ 2022-05-12 09:36 活着的虫子 阅读(300) 评论(2) 推荐(0) 编辑

2022年4月11日

关于异常STATUS_NO_SUCH_DEVICE(0xC000000E)

摘要: 简介 STATUS_NO_SUCH_DEVICE,指定的驱动器不存在,值为0xC000000E,其定义如下: //// MessageId: STATUS_NO_SUCH_DEVICE//// MessageText://// A device which does not exist was sp 阅读全文

posted @ 2022-04-11 09:46 活着的虫子 阅读(557) 评论(0) 推荐(0) 编辑

2022年3月22日

关于异常STATUS_VERIFIER_STOP(0xC0000421)

摘要: 简介 STATUS_VERIFIER_STOP异常表示因Application verifier(应用程序验证器) 在当前进程找到一个错误而停止.。值为0xC0000421。其定义如下: //// MessageId: STATUS_VERIFIER_STOP//// MessageText:/// 阅读全文

posted @ 2022-03-22 17:20 活着的虫子 阅读(220) 评论(0) 推荐(0) 编辑

2022年2月8日

Windbg命令系列---.printf

摘要: .printf的行为跟C语言的printf函数类似。 语法 .printf [/D] [Option] "FormatString" [, Argument , ...] 参数 /D 指定格式字符串包含调试器标记语言(DML)。 Option 指定WinDbg应将FormatString解释为的文本 阅读全文

posted @ 2022-02-08 08:34 活着的虫子 阅读(378) 评论(0) 推荐(1) 编辑

2022年1月4日

Windbg里识别CRT堆

摘要: 当我们调试时,某些情况下,我们需要专门针对crt堆进行分析,但,我们知道进程里可能有多个堆,比如 你说哪个是crt堆? 如果你跟踪过crt的代码,那么这个问题就好办了,crt堆是通过msvcrt!_heap_init来分配初始化的,在_heap_init里把crt堆的句柄给了变量_crtheap,所 阅读全文

posted @ 2022-01-04 08:23 活着的虫子 阅读(213) 评论(0) 推荐(0) 编辑

2021年12月7日

Windbg .cmdtree命令的cmd文件注意事项

摘要: 1、"windbg ANSI Command Tree 1.0"前不能有空格,或空行 2、cmdtree这个窗口的标题 title紧接着一对{""},比如title {"dump analyze"}。一定注意title和后面的内容是分离的,不要写成:title{"dump analyze"}。为了规 阅读全文

posted @ 2021-12-07 13:57 活着的虫子 阅读(109) 评论(0) 推荐(0) 编辑

2021年12月4日

Windbg查看类/结构体大小的方法

摘要: 在调试的过程中,我们很有可能需要知道某个类或结构体的大小,有哪些方式方法呢? 其一,用dx指令观察类型实例,它会列出成员和每个成员的大小,自己计算,比如 自己根据类型信息和内存对齐去计算,如果成员是其他复杂的结构,不清楚的话难计算,另外,不知道对齐规则,会算错。所以这样很麻烦。 其二、用dt -v指 阅读全文

posted @ 2021-12-04 08:58 活着的虫子 阅读(606) 评论(0) 推荐(0) 编辑

2021年12月2日

WINDBG命令系列---!gle

摘要: !gle扩展指令显示当前线程的最后一个错误值。 语法 !gle [-all] 参数 -all 显示目标系统上每个用户模式线程的最后一个错误。如果在用户模式下忽略此参数,调试器将显示当前线程的最后一个错误。如果在内核模式下忽略此参数,调试器将显示当前寄存 器上下文指定的线程的最后一个错误。 DLL W 阅读全文

posted @ 2021-12-02 13:15 活着的虫子 阅读(158) 评论(0) 推荐(0) 编辑

2021年12月1日

关于STATUS_IMAGE_CHECKSUM_MISMATCH(0xC0000221L)异常

摘要: 简介 STATUS_IMAGE_CHECKSUM_MISMATCH表明应用程序或DLL已经损坏。值为0xC0000221。其定义如下: //// MessageId: STATUS_IMAGE_CHECKSUM_MISMATCH//// MessageText://// {Bad Image Che 阅读全文

posted @ 2021-12-01 09:43 活着的虫子 阅读(242) 评论(0) 推荐(0) 编辑

2021年11月10日

windbg dt 如何显示类的静态成员变量?

摘要: windbg的dt指令可以用来显示变量的结构和值,如果是一个C++类,那么它将以偏移的形式显示类里的成员地址和符号名。那类里的静态成员呢?如下: 可知,静态成员以=符号开始,紧跟地址、符号名和值。 阅读全文

posted @ 2021-11-10 17:25 活着的虫子 阅读(223) 评论(0) 推荐(0) 编辑

2021年10月19日

关于WinDbg/SOS如何快速转储堆上所有的.NET异常

摘要: 由于.net异常与任何其他异常一样是一个.net对象,因此当您(或您调用的某些代码)调用new XXException()时,它会存储在GC堆中。这意味着,如果您有一个进程的内存转储,您可以转储所有最近发生的异常,或者更确切地说,所有尚未被垃圾收集的异常。 如果您在windbg中加载了sos(.lo 阅读全文

posted @ 2021-10-19 08:00 活着的虫子 阅读(180) 评论(0) 推荐(1) 编辑

2021年10月18日

Windbg命令系列---#(汇编搜索)

摘要: #命令在反汇编代码里根据指定模式进行搜索。 语法 # [Pattern] [Address [ L Size ]] 参数 Pattern 指定要在反汇编代码中搜索的模式。模式可以包含各种通配符和说明符。如果要在模式中包含空格,则必须用引号将模式括起来。该模式不区分大小写。如果您以前使用过#命令并且省 阅读全文

posted @ 2021-10-18 08:20 活着的虫子 阅读(653) 评论(0) 推荐(0) 编辑

2021年10月15日

关于0xC06D007F未知软件异常

摘要: 简介 0xC06D007F这个异常通常是在PE的延迟加载dll的时候发生的,加载器找不到对应的dll就会抛出这个异常。 说明 这个异常其实跟0xC06D007E异常差多,排查方法可以跟它一样。但0xC06D007F更偏向模块错误。 异常结构 ExceptionAddress: 7c812aeb (k 阅读全文

posted @ 2021-10-15 09:05 活着的虫子 阅读(1429) 评论(0) 推荐(0) 编辑

2021年10月14日

关于0xC06D007E未知软件异常

摘要: 简介 此错误可能是由软件冲突或系统文件损坏引起的。也有可能应用缺少模块。 说明 为了排除这个异常,可以先确认:最近是否安装了一个新程序吗?Windows的内部版本号和版本是什么?建议您执行干净的引导。通过使用最少的一组驱动程序和启动程序来执行干净引导以启动Windows。这有助于消除在Windows 阅读全文

posted @ 2021-10-14 08:15 活着的虫子 阅读(1322) 评论(0) 推荐(0) 编辑

2021年10月13日

浮点异常

摘要: IEEE浮点数标准定义了六种异常,每种错误都对应于特定类型的错误。当异常发生时(在标准语言中,当异常被引发时),可能发生以下两种情况之一。默认情况下,只需在浮点状态字中记录异常,程序将继续运行,就好像什么都没有发生一样。该操作生成一个默认值,该值取决于异常。您的程序可以检查状态字以找出发生了哪些异常 阅读全文

posted @ 2021-10-13 08:20 活着的虫子 阅读(1472) 评论(0) 推荐(0) 编辑

2021年10月12日

关于STATUS_FLOAT_INEXACT_RESULT(0xC000008F)异常

摘要: 简介 STATUS_FLOAT_INEXACT_RESULT 浮点运算结果不精确异常。值为0xC000008F。其定义如下 //// MessageId: STATUS_FLOAT_INEXACT_RESULT//// MessageText://// {EXCEPTION}// Floating- 阅读全文

posted @ 2021-10-12 08:20 活着的虫子 阅读(302) 评论(0) 推荐(0) 编辑

2021年10月11日

关于STATUS_FLOAT_UNDERFLOW(0xC0000093)异常

摘要: 简介 STATUS_FLOAT_UNDERFLOW 浮点运算下溢异常。值为0xC0000093。其定义如下 //// MessageId: STATUS_FLOAT_UNDERFLOW//// MessageText://// {EXCEPTION}// Floating-point underfl 阅读全文

posted @ 2021-10-11 08:20 活着的虫子 阅读(89) 评论(0) 推荐(0) 编辑

2021年10月9日

关于STATUS_FLOAT_OVERFLOW(0xC0000091)异常

摘要: 简介 STATUS_FLOAT_OVERFLOW 浮点运算溢出异常。值为0xC0000091。其定义如下 //// MessageId: STATUS_FLOAT_OVERFLOW//// MessageText://// {EXCEPTION}// Floating-point overflow. 阅读全文

posted @ 2021-10-09 08:27 活着的虫子 阅读(102) 评论(0) 推荐(0) 编辑

2021年10月8日

关于STATUS_FLOAT_DIVIDE_BY_ZERO(0xC000008E)异常

摘要: 简介 STATUS_FLOAT_DIVIDE_BY_ZERO 浮点数除零异常。值为0xC000008E。其定义如下 //// MessageId: STATUS_FLOAT_DIVIDE_BY_ZERO//// MessageText://// {EXCEPTION}// Floating-poin 阅读全文

posted @ 2021-10-08 10:37 活着的虫子 阅读(170) 评论(0) 推荐(0) 编辑

2021年9月30日

关于STATUS_FLOAT_INVALID_OPERATION(0xC0000090)异常

摘要: 简介 STATUS_FLOAT_INVALID_OPERATION 浮点数无效操作。值为0xC0000090。其定义如下 //// MessageId: STATUS_FLOAT_INVALID_OPERATION//// MessageText://// {EXCEPTION}// Floatin 阅读全文

posted @ 2021-09-30 10:58 活着的虫子 阅读(306) 评论(0) 推荐(0) 编辑

关于STATUS_FLOAT_MULTIPLE_FAULTS(0xC00002B4)异常

摘要: 简介 STATUS_FLOAT_MULTIPLE_FAULTS 多浮点错误。值为0xC00002B4。定义如下 //// MessageId: STATUS_FLOAT_MULTIPLE_FAULTS//// MessageText://// {EXCEPTION}// Multiple float 阅读全文

posted @ 2021-09-30 08:45 活着的虫子 阅读(445) 评论(0) 推荐(0) 编辑

2021年9月28日

关于STATUS_FLOAT_MULTIPLE_TRAPS(0xC00002B5)异常

摘要: 简介 STATUS_FLOAT_MULTIPLE_TRAPS 浮点数多重陷阱异常。值为0xC00002B5。定义如下 //// MessageId: STATUS_FLOAT_MULTIPLE_TRAPS//// MessageText://// {EXCEPTION}// Multiple flo 阅读全文

posted @ 2021-09-28 17:24 活着的虫子 阅读(114) 评论(0) 推荐(0) 编辑

导航