!heap是查看进程中堆情况的命令
使用后有如下提示:
*************************************************************************
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_HEAP_ENTRY ***
*************************************************************************
!heap这个扩展命令需要系统DLL(NTDLL和KERNEL32.DLL)的符号,上面的提示是说缺少ntdll!_HEAP_ENTRY(描述堆块的基本数据结构,见《软件调试》P658)这个结构的符号。
解决的方法是连接符号服务器(P935),让WinDBG自动下载系统文件的符号,也就是在连着互联网的情况下执行下面的两条命令:
.symfix c:symbols (设置符号服务器,并把c:symbols作为下游符号库)
.reload (重新加载符号)
注:c:symbols文件夹最好在你的工程中创建。
.symfix c:symbols
.reload