列表(list)是一种非常常用的数据结构。在Windows的内核态和用户态模块中都有很多应用。调试时观察列表的各个节点是一个常见的任务。0:001> dt _LIST_ENTRY +0x000 Flink : Ptr32 _LIST_ENTRY +0x004 Blink : Ptr32 _LIST_ENTRY 为了辅助支持链表有关的调试任务,WinDbg专门设计了一个!list命令。使用这个命令可以对链表的每个节点执行一个动作。
比如,以下命令会显示出每个线称的异常处理器链条(FS Chain)的每个节点。
0:000> !list -x "dd" -a "l4" 0013de34 0013de34 0013ff0c 304af1b4 00000000 0013ff18
0013ff0c 0013ffb0 304ae424 ffffffff 0013ffc0
0013ffb0 0013ffe0 304ac0fc 30001a78 00000000
0013ffe0 ffffffff 7c839a00 7c816fe0 00000000
ffffffff ???????? ???????? ???????? ????????
Cannot read next element at ffffffff
|