剧集

碎片整理工具:#20 - WinDbg - 基本命令

在这集 碎片整理工具中,安德鲁·理查兹、乍得·贝德和拉里·拉森继续查看 Windows 调试工具(特别是 WinDbg)。 WinDbg 是支持用户模式调试进程或计算机内核模式调试的调试器。

此分期将遍历用于显示调试会话状态的命令。 它还显示了用于查看用户模式进程的进程和线程信息的一些基本命令。 我们将介绍以下命令:

  • 版本
  • vertarget
  • |
  • ||
  • .sympath
  • .srcpath
  • .exepath
  • .extpath
  • 。链
  • !analyze -v
  • .bug检查
  • !error
  • ~
  • ~_NN_s
  • ~~[TID]s
  • ~*K
  • ~*R
  • !process 0 17
  • !线程
  • !findstack
  • !uniqstack
  • !peb
  • !teb
  • k=
  • 存款 保障 计划
  • dpu
  • Dpa
  • 民进党
  • .reload /f
  • .reload /user
  • !gle
  • !tls

请确保观看 Defrag Tools 第 1 集,了解如何获取 适用于 Windows 的调试工具以及如何设置符号和源代码解析所需的环境变量的说明。

资源:适用于 Windows 7 和 .NET Framework 4 的 Microsoft Windows SDK
系统错误代码

时间线:[01:01] - 记事本的实时调试
[02:14] - 调试会话概述(版本)
[03:10] - OS 版本/体系结构和系统/调试/用户/内核时间 (vertarget)
[09:03] - 进程和系统状态(| {pipe}, || {double pipe}
[10:16] - 符号路径(.同情)
[10:52] - 源路径(.srcpath)
[11:00] - 可执行文件路径(.exepath,lmvm - 内存映射映像文件)
[11:40] - 扩展路径(.extpath)
[12:20] - 加载的扩展(.chain)
[13:43] - !analyze 适用于用户和内核崩溃(!analyze -v)
[14:56] - Bug检查代码和参数(.bug检查)
[15:26] - 错误代码查找(!error)
[16:04] - 用户进程中的线程(~ {tilde}
[17:33] - 更改当前线程上下文(~_NN_s)
[20:13] - 显示所有调用堆栈或寄存器(~*k、~*r)
[21:04] - 按 TID 更改当前线程上下文 (~~[TID]s)
[24:18] - 显示内核会话中所有进程中的所有调用堆栈(!process 0 17)
[25:29] - 所有线程的配置摘要(!线程)
[26:54] - 查找调用堆栈(!findstack)
[27:35] - 唯一调用堆栈 (!uniqstack)
[28:30] - 进程环境块 (!peb)
[30:50] - 线程环境块 (!teb)
[32:02] - 堆栈变量的缓冲区溢出
[33:11] - 调用堆栈娱乐 (k= {x64}
[34:40] - 将指针显示为符号、Unicode、ANSI 或指针(dps、dpu、dpa、dpp)
[37:40] - 强制加载符号(.reload /f)
[38:43] - 更改线程上下文时强制加载内核中的用户符号(.reload /user)
注意:/u 用于卸载,而不是加载用户符号 - 这就是为什么查德是内核家!
[39:18] - TEB 中的 SetLastError/GetLastError 值(!gle)
[40:14] - TEB 中的线程本地存储值(!tls)