约有 1,303 项符合查询结果, 以下是第 89 - 131项。
费时 < 1 秒。
将第一个2.0写为:
@@c++(2.0)
Posted in WinDbg
by
格蠹老雷
on 2009-07-27
要搞清是Explorer进程挂死还是整个系统挂死,这是完全不同性质的两件事。根据上面的信息中所包含的CPU状态,鼠标应该是可以移动的,不知楼主是认真调查过,还是随便推测了一下。
Posted in Windows内核调试
by
格蠹老雷
on 2009-07-27
如果鼠标都不能动(假设鼠标没有坏^-^),那么就不必急着看窗口消息了。
尝试执行下面几条命令:
!dpcs
!prcb
!pcr
!locks
Posted in Windows内核调试
by
格蠹老雷
on 2009-07-27
Hang住的情况千奇百怪,建议你再搜集些信息看是哪个层次的问题。
1)Ctrl+Alt+Del是否可以把任务管理器调出来,如果可以,那么就只是Explorer进程Hang住了,进不了桌面,这样的问题要简单的多了。
2)鼠标是否还能移动?
3)硬盘灯是否还闪烁?
Posted in Windows内核调试
by
格蠹老雷
on 2009-07-27
RegionUsageHeap代表普通堆(不包括页堆)所使用的内存,比如在没有启用页堆情况下调用new(不包括重载情况),malloc,或者HeapAlloc而分配的内存属于此类。
RegionUsageImage代表映像文件所使用的内存,比如加载了的EXE或者DLL模块。
RegionUsageIsVAD的含义有些模糊,WinDBG帮助文件是这样说明的:
The ''busy'' region. This region includes all virtual allocation blocks, the SBH heap, memory from custom allocators, and all other regions of the address space ...
Posted in WinDbg
by
格蠹老雷
on 2009-07-27
如果是被人从TaskMgr杀掉的,那么便很难从被杀进程的用户态DUMP文件中找到线索。正像用户态栈中所显示的,普通线程大都数时候都是在等待,此时线程实际上是在内核态的,大多时候是在睡觉。这时有人要杀它,其实也就是调用TerminateProcess API,对应的也就是NtTerminateProcess内核服务。这个内核服务检查权限没有问题后,就开始下手了,清理这个进程了,也就是说用户态的代码根本没机会执行,在“睡梦”中就结束使命了。
下面是TaskMgr在执行杀进程动作时的过程:
0:000> kvn # ChildEBP RetAddr Args to ...
Posted in C/C++本地代码调试
by
格蠹老雷
on 2009-07-26
问题1) Virtual block: 51d70000 - 51d70000 (size 00000000)用来描述一个大虚拟内存块(参见《软件调试》P655),其中显示的size 0是因为缺少数据结构_HEAP_VIRTUAL_ALLOC_ENTRY的符号,所以没能取到正确的信息。
问题2)!address显示的是整个用户态的地址空间,2GB,堆只是这个地址空间中的一部分,此外还有模块映像、PEB、栈等,所以根据!heap -s统计出来的数据是应该比!address显示的总内存小啊。
问题3)页堆使用独特的管理结构,所以应该使用!heap -p来观察。
Posted in WinDbg
by
格蠹老雷
on 2009-07-24
不太清楚楼主的用意。是为了开发一个调试器插件,还是用在一般的软件开发中?
从标题来看,是想得到其它进程的PEB地址,也就是从一个进程里取另一个进程的PEB,这有点像一个人想知道另一个人的钱包放在哪,呵呵,我的意思是说这是违反进程隔离理念的。
Posted in WinDbg
by
格蠹老雷
on 2009-07-23
简单说,在WinDBG里,后者是前者的一个子集。Windows定义了8种调试事件(参考MSDN中DEBUG_EVENT的定义或者《软件调试》P244) ,第一种就是Exception。
观察WinDBG的Event Filters对话框(P948),也可以帮助理解这个问题,对话中列出了几乎所有的Event(允许添加),其中一部分是关于异常的,比如Access Violation。
Posted in WinDbg
by
格蠹老雷
on 2009-07-19