约有 1,303 项符合查询结果, 以下是第 96 - 131项。
费时 < 1 秒。
为何?
0x391ec0开始是相邻的下一个空闲堆块,即HEAP_FREE_ENTRY结构,391ec8处是这个结构的FreeList字段;发生溢出前,FreeList字段的内容是0x390178-0x390178,也就是下一个空闲块的地址,0x390178-8是那个块的HEAP_FREE_ENTRY结构(因为FreeList字段在结构内的偏移是8);发生溢出后,FreeList字段变成了0x2b2a2928-0x2f2e2d2c,但是堆管理器不知道溢出,仍然把0x2b2a2928-8当作是下个空闲块的HEAP_FREE_ENTRY结构,但是读取这个地址时失败了,因此显示那句话:
Unable to read nt!_HEAP_FREE_ENTRY structure at ...
Posted in 《软件调试》答疑
by
格蠹老雷
on 2009-04-27
先说Merry提到的WARNING ...
Posted in WinDbg
by
格蠹老雷
on 2009-04-25
从上面的展回溯来看,是调用wctomb函数将宽字符转换为多字节的字符串(wide character to multibyte character)遇到意外,调用logb函数写日志,后者使用流机制时抛出异常了。
根据其中的提示,可以查看olevar.cpp的源代码,不知道,你使用的是哪种版本的VC,对于VC2005,默认路径为:
c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc
其中的确有一个THROW_LAST()宏。
你可以对FgcsServer!wctomb设置断点,然后跟踪。
另外,上面的提示信息中,WinDBG警告没有找到合适的映像文件,应该通过File > Image File ...
Posted in WinDbg
by
格蠹老雷
on 2009-04-24
异常代码e06d7363是ASCII码.msc,这是VC编译器编译使用throw关键字抛出的异常时所使用的异常代码。参见下面的PPT:
http://conference.softcompass.com/cpp2005/record/ppt/cppseminar_exception_raymond.ppt
还是建议你解决好符号问题好,再观察栈回溯。
Posted in WinDbg
by
格蠹老雷
on 2009-04-24
这个栈回溯基本可以说明在这个进程的2号线程中系统的抛出异常函数(RaiseException)被调用,可能是有C++代码throw异常,也可能是有代码直接调用这个API。目前的栈回溯信息还不完整,建议设置好符号服务器后(.symfix c:\symbols),重新加载符号(.reload),然后执行kv命令观察完整的栈回溯和函数参数。
Posted in WinDbg
by
格蠹老雷
on 2009-04-24
symIndexId通常是从1开始依次递增的,这是正常的。IndexID较小的通常是Compiland。使用SymView的Search功能中的Symbol by ID也是可以找到相关符号的。
Posted in WinDbg
by
格蠹老雷
on 2009-04-23
不知道你要调用的16代码是不是相对简单和固定,如果其中会调用传统的BIOS服务(INT 15等),那么运行时还是会出问题。Windows使用了类似解释执行的方法,进入系统后,会把16位代码“翻译”为32位形式执行,这样会把“危险的”调用重定向。
Posted in Windows内核调试
by
格蠹老雷
on 2009-04-21
尝试过在执行好函数的序言(Prolog)代码(push ebp; mov ebp, esp)后执行dv命令么?因为局部变量通常是使用栈帧基地址引用的,在没有执行序言代码前,栈帧基地址还没有完全建立好。
Posted in Windows内核调试
by
格蠹老雷
on 2009-04-20