概述:Windbg 内核调试的一些记录

参考:WinDbg (内核模式) 入门 - Windows drivers | Microsoft Learn

命令整理-辅助类

eb ntdll!ShowSnaps 1

线程等待原因

enum KWAIT_REASON
{
    Executive,
    FreePage,
    PageIn,
    PoolAllocation,
    DelayExecution,
    Suspended,
    UserRequest,
    WrExecutive,
    WrFreePage,
    WrPageIn,
    WrPoolAllocation,
    WrDelayExecution,
    WrSuspended,
    WrUserRequest,
    WrEventPair,
    WrQueue,
    WrLpcReceive,
    WrLpcReply,
    WrVirtualMemory,
    WrPageOut,
    WrRendezvous,
    Spare2,
    Spare3,
    Spare4,
    Spare5,
    Spare6,
    WrKernel,
    MaximumWaitReason
};

KWAIT_REASON是一个枚举类型,定义在Windows内核中,用于表示进程或线程等待的原因。以下是每个枚举值的含义:

  • Executive: 进程或线程正在等待执行。
  • FreePage: 进程或线程正在等待空闲页。
  • PageIn: 进程或线程正在等待页面被载入内存。
  • PoolAllocation: 进程或线程正在等待资源池的分配。
  • DelayExecution: 进程或线程正在等待以执行延迟操作。
  • Suspended: 进程或线程被挂起,无法执行操作。
  • UserRequest: 进程或线程正在等待来自用户的请求。
  • WrExecutive: 与Executive相同。
  • WrFreePage: 与FreePage相同。
  • WrPageIn: 与PageIn相同。
  • WrPoolAllocation: 与PoolAllocation相同。
  • WrDelayExecution: 与DelayExecution相同。
  • WrSuspended: 与Suspended相同。
  • WrUserRequest: 与UserRequest相同。
  • WrEventPair: 进程或线程正在等待事件对的触发。
  • WrQueue: 进程或线程正在等待队列的处理。
  • WrLpcReceive: 进程或线程正在等待接收LPC(本地过程调用)消息。
  • WrLpcReply: 进程或线程正在等待回复LPC(本地过程调用)消息。
  • WrVirtualMemory: 进程或线程正在等待虚拟内存的操作。
  • WrPageOut: 进程或线程正在等待页面被写出。
  • Rendezvous: 进程或线程正在等待 rendezvous(汇聚)操作。
  • Spare2: 保留,未使用。
  • Spare3: 保留,未使用。
  • Spare4: 保留,未使用。
  • Spare5: 保留,未使用。
  • Spare6: 保留,未使用。
  • WrKernel: 进程或线程正在等待内核操作。
  • MaximumWaitReason: 枚举的最后一个元素,用于指示已达到最大等待原因数量。

这些枚举值用于Windows操作系统的进程和线程调度,以及在崩溃时生成Dump文件以进行问题排查和修复。