随笔分类 -  调试

上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页

关于bug调试工具的使用/方法/经验
如何调试WOW64应用程序
摘要:最近,我处理了一个问题,在系统帐户下安装32位Office时没有发生注册表反射。这需要同时研究32位Office代码和实现注册表反射的Wow64代码。使用32位调试器附加到Wow64进程时,就像在32位计算机上调试32位进程一样;进程中没有64位二进制文件。但是,我们需要调试Wow64来调试注册表反 阅读全文

posted @ 2020-09-30 08:02 活着的虫子 阅读(917) 评论(0) 推荐(0) 编辑

使用调试器脚本增强断点
摘要:最近要求我在升级过程中跟踪一个问题。问题归结为在安装过程中捕获打开特定注册表服务项的Microsoft组件。像这样的问题经常需要实时调试来实时捕获注册表访问。我本可以在RegOpenKeyExW()上设置一个断点,并检查传递到函数中的每个请求的键,但是考虑到RegOpenKeyExW()是一个使用率 阅读全文

posted @ 2020-09-29 08:21 活着的虫子 阅读(258) 评论(0) 推荐(0) 编辑

MDL中捕获到损坏的页表页
摘要:系统会遇到随机错误检查,内存损坏。有趣的是,腐败有一个非常特殊的模式——它看起来像是一个PFN地址,在这个过程中,标志被随机地放置在页面表页面的几个地方。内存管理器永远不会做这种事情,我怀疑驱动程序正在编辑用户页表页,这是不应该做的。 让我们看看堆栈: kd> kb *** Stack trace 阅读全文

posted @ 2020-09-28 08:15 活着的虫子 阅读(278) 评论(0) 推荐(0) 编辑

跟踪MmSt分页池使用情况
摘要:我最近注意到的一个趋势是,在尝试KB304101(PoolUsageMaximum)之后,MmSt标签的使用率仍然很高,这是一种趋势。内存管理器将这些池分配用于节对象原型pte。通常只有两种选择:1)升级到64位平台,或2)减小卷的大小。但我们可能想知道哪些映射文件正在使用这个内存。这是如何做到的。 阅读全文

posted @ 2020-09-25 08:00 活着的虫子 阅读(427) 评论(0) 推荐(0) 编辑

如何跟踪高CPU在用户模式应用程序-现场调试!
摘要:我想谈谈我们经常处理的一个常见问题。我们的任务通常是在用户模式进程/应用程序中查找哪些函数正在使用CPU。通常,用户会发现一个应用程序使用的CPU比他们预期的要多,这可能会影响整个系统的性能和响应能力。 对于这个练习,我编写了一些人为的示例代码,称为EATCPU。它包含在博客文章的底部。任务管理器的 阅读全文

posted @ 2020-09-23 08:18 活着的虫子 阅读(449) 评论(0) 推荐(0) 编辑

如何与转储文件建立丰富多彩的关系
摘要:我每天都看很多转储文件。在这种情况下,我喜欢充分利用windbg可定制的外观和感觉。实际上,我在DMP文件和CMD文件之间有一个关联设置,每当我双击一个转储文件时,这个文件就会加载我自定义的颜色工作区。我喜欢有彩色源代码和调试命令窗口输出的黑色背景。下面是我典型的调试会话的快照。 下面告诉你的设置方 阅读全文

posted @ 2020-09-22 08:11 活着的虫子 阅读(218) 评论(0) 推荐(0) 编辑

Kernel Stack Overflows
摘要:今天我想谈谈一个常见的错误,我们在日常工作钟许多案例中都看到了这一点。它涉及到驱动程序占用内核堆栈上的过多空间,从而导致内核堆栈溢出,然后将通过以下错误检查之一使系统崩溃: 1. STOP 0x7F: UNEXPECTED_KERNEL_MODE_TRAP 当参数1设置为EXCEPTION_DOUB 阅读全文

posted @ 2020-09-21 08:38 活着的虫子 阅读(1100) 评论(0) 推荐(0) 编辑

非分页池的消耗
摘要:我最近在处理一个问题,服务器在几天内耗尽了NonPagedPool。通常,我们只需要使用像PoolMon这样的工具来识别有问题的pool标记,然后使用本文中的方法找到使用该pool标记的驱动程序。然而,让这个案例有趣的是pool标记,而且我们无法使用常规方法识别驱动程序。你一会儿就会明白我的意思了。 阅读全文

posted @ 2020-09-18 07:51 活着的虫子 阅读(530) 评论(1) 推荐(1) 编辑

MBR反汇编
摘要:关于MBR的反汇编,我想花点时间向您展示一下快速而肮脏的方法。首先,使用低级扇区编辑器(如Microsoft资源工具包实用程序DiskProbe)将MBR转储到文件中。保存文件后,启动一个程序(如记事本)并使用Windbg(Windows调试器)附加到它。接下来,找到一个有效但未占用的内存范围(默认 阅读全文

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

LPC (Local procedure calls)(二)内核调试扩展
摘要:我们将讨论调试器扩展,这些扩展允许您查看与LPC相关的问题。 LPC Kernel Debugger Extensions Command Description !lpc Display the list and description of all the !lpc commands !lpc 阅读全文

posted @ 2020-09-16 08:00 活着的虫子 阅读(597) 评论(0) 推荐(0) 编辑

LPC (Local procedure calls) (一)数据结构
摘要:什么是LPC LPC(Local-Process-communicationandnotlocalprocedure-Calls)是一种在NT内核中实现的基于消息的高速通信机制。LPC可用于两个用户模式进程之间、用户模式进程与内核模式驱动程序之间或两个内核模式驱动程序之间的通信。一个例子是通过LPC 阅读全文

posted @ 2020-09-15 07:51 活着的虫子 阅读(1726) 评论(0) 推荐(0) 编辑

桌面堆概述(二)
摘要:我想提供一些关于桌面堆的后续信息。在第一篇文章中,我没有讨论64位Windows、3GB或Vista上与桌面堆相关的内存范围的大小。所以,不用再多说了,下面是各种平台上的相关大小。 Windows XP (32-bit) · 48 MB = SessionViewSize (default regi 阅读全文

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

桌面堆概述(一)
摘要:桌面堆可能不是你花很多时间考虑的事情,这是件好事。但是,有时您可能会遇到由于桌面堆耗尽而导致的问题,然后了解此资源会有所帮助。让我先说一下,在Vista中,内核地址空间的情况发生了显著的变化,而我今天所说的大部分内容并不适用于Vista。 奠定基础:会话空间 要理解桌面堆,首先需要了解会话空间。wi 阅读全文

posted @ 2020-09-11 07:53 活着的虫子 阅读(875) 评论(0) 推荐(0) 编辑

做好在windows系统上调试的工具准备
摘要:为了开始调试工作,我想向您提供一个工具列表。 以下工具是“Debugging Tools for Windows”的一部分–您肯定需要这些工具: · windbg · cdb · ntsd · tlist · gflags · adplus · UMDH · symcheck Sysinternal 阅读全文

posted @ 2020-09-10 07:55 活着的虫子 阅读(285) 评论(0) 推荐(0) 编辑

又是兼容性,但确不一样
摘要:正在悠哉,突然支持的同事过来说,某个用户软件启动不了了。详细情况是:由于出现某些问题,支持同事给这个客户重装了软件,然后就启动不了了,后来把安装目录改了名字,就能运行了。虽然客户能用了,但我很不理解为什么改了个目录名就能运行呢。于是恢复现场,重现故障,不管37二十一,抓个dmp先。 用windbg打 阅读全文

posted @ 2020-09-09 08:17 活着的虫子 阅读(547) 评论(0) 推荐(0) 编辑

在你试图找到解决办法之前,先了解你的问题
摘要:到目前为止,我还没有写过一篇博客文章,给出关于做绩效工作的哲学建议。但是最近我想也许是时候写这样一个条目了,因为我见过很多人认真地看一些性能计数器(通常是不正确的)或其他数据,并问了很多问题,比如“这个分配率太高了吗?”,“在我看来它太高了。”或者“我的size太大了,对吧?",在他们没有足够的证据 阅读全文

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

!eeheap -gc 和 !address输出的关联性
摘要:!address是一个非常强大的调试器命令。它向您显示了您的虚拟地址空间的确切分布。 如果你已经从 !sos.eeheap -gc命令得到了输出,例如: 0:003> !eeheap -gc Number of GC Heaps: 1 generation 0 starts at 0x0124507 阅读全文

posted @ 2020-09-07 08:24 活着的虫子 阅读(525) 评论(0) 推荐(0) 编辑

我的应用似乎卡死了。我该怎么办?
摘要:定义“卡死”是一个很好的起点。有时又叫"挂起",英文叫"hang"。当人们说“卡死”时,他们可能意味着各种各样的事情。当我说“卡死”时,我的意思是进程没有进展——进程中的线程要么被阻塞(例如死锁,要么因为来自其他进程的线程而没有被调度),要么正在执行代码(疯狂地)但没有做有用的工作(例如无限循环,或 阅读全文

posted @ 2020-09-04 07:57 活着的虫子 阅读(595) 评论(0) 推荐(0) 编辑

使用正确的工具进行调试
摘要:当你需要调试/调查问题时,我想指出的一个非常强大的工具是你的调试器(如果你的调试器也是windbg/cdb,那就是对了,因为这就是我要用的,这也是我在本文中将要讨论的)。对于那些对研究内存相关问题感兴趣的人来说,无论是因为你不喜欢当前应用程序的内存使用情况,还是只是想提高,学习使用调试器都是非常宝贵 阅读全文

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

平衡GC线程上的工作
摘要:在server gc中,每个GC线程都将并行地在其堆上工作(这是一个简单化的视图,不一定对所有阶段都适用,但在较高的层次上,这正是并行GC的概念)。因此,仅此一项就意味着工作已经在GC线程之间被分割了。但是,由于某些阶段的GC工作只能在所有线程完成其最后一个阶段之后才能继续(例如,在所有GC线程都完 阅读全文

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

上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页

导航