随笔分类 -  调试

1 2 3 4 5 ··· 32 下一页

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

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

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

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

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

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

关于异常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 活着的虫子 阅读(209) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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 活着的虫子 阅读(2636) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

VS IDE里查看环境变量
摘要:用$env 阅读全文

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

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

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

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

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

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

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

关于异常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 活着的虫子 阅读(698) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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 活着的虫子 阅读(125) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 32 下一页

导航