【调试技术】windbg内核调试

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

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

命令整理-辅助类

1
eb ntdll!ShowSnaps 1

线程等待原因

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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文件以进行问题排查和修复。


【调试技术】windbg内核调试
https://hodlyounger.github.io/wiki/调试技术/【调试技术】windbg内核调试/
作者
mingming
发布于
2024年8月31日
许可协议