1、"windbg ANSI Command Tree 1.0"前不能有空格,或空行

2、cmdtree这个窗口的标题 title紧接着一对{""},比如title {"dump analyze"}。一定注意title和后面的内容是分离的,不要写成:title{"dump analyze"}。为了规避这个问题,你可以换行

  title

  {"dump analyze"}

3、"windbg ANSI Command Tree 1.0"和title之间可以有空行,但不能有其他任何内容

4、title后必须有其他元素,否则加载失败

5、注意正文前面的空格,子级的空格一定要比上一级多。一个子级只能比上一级多一个空格,两个都会报错!

当我们调试时,某些情况下,我们需要专门针对crt堆进行分析,但,我们知道进程里可能有多个堆,比如

 

你说哪个是crt堆?

如果你跟踪过crt的代码,那么这个问题就好办了,crt堆是通过msvcrt!_heap_init来分配初始化的,在_heap_init里把crt堆的句柄给了变量_crtheap,所以我们只要看这个变量的值即可,如下

 

即Address=0xfe0000的堆就是该进程的crt堆。

 

简介

STATUS_VERIFIER_STOP异常表示因Application verifier(应用程序验证器) 在当前进程找到一个错误而停止.。值为0xC0000421。其定义如下:

//
// MessageId: STATUS_VERIFIER_STOP
//
// MessageText:
//
// Application verifier has found an error in the current process.
//
#define STATUS_VERIFIER_STOP             ((NTSTATUS)0xC0000421L)

说明

此异常一定要使用Application verifier或Gflags.exe等工具对特定程序做相关的设置才会产生。

异常结构

ExceptionAddress: 6f59df82 (verifier!VerifierStopMessage+0x00000052)
   ExceptionCode: c0000421 (Verifier stop)
  ExceptionFlags: 00000000
NumberParameters: 6
   Parameter[0]: 32725641//可能是个魔数,有知道的同行指正。
   Parameter[1]: 0000000f//StopCode,0xf---表示堆块后缀填充被破坏
   Parameter[2]: 00d01000//Heap句柄
   Parameter[3]: b2bfab10//用户内存开始地址
   Parameter[4]: 000001c8//用户内存size
   Parameter[5]: b2bfacd8//用户内存结束地址
当然上面的参数个数和具体内容是由StopCode决定的,不唯一。具体的后面有时间的话会有相关文章

简介

STATUS_NO_SUCH_DEVICE,指定的驱动器不存在,值为0xC000000E,其定义如下:

//
// MessageId: STATUS_NO_SUCH_DEVICE
//
// MessageText:
//
// A device which does not exist was specified.
//
#define STATUS_NO_SUCH_DEVICE            ((NTSTATUS)0xC000000EL)

说明

STATUS_NO_SUCH_DEVICE通常表示计算机中的启动配置数据已损坏,或者热插拔的设备出现了问题。两种情况:一是未连接或无法访问所需设备;二是无法加载应用程序或操作系统,原因是所需文件丢失或包含错误。