当前位置: 首页 > news >正文

windbg常用命令

1. 基本调试命令

1.1启动和附加

windbg -pn : 按进程名称启动调试。
windbg -p : 按进程 ID 启动调试。

1.2 控制执行

g: 继续执行程序。
p: 单步执行,不进入函数。
t: 单步执行,进入函数。
bp <Address>: 在指定地址设置断点。
bl: 列出所有断点。
bc : 清除指定断点。

1.3 查看内存和寄存器

r: 显示寄存器内容。
r <Register>: 显示指定寄存器内容。
dd <Address>: 以双字(DWORD)格式显示内存内容。
dc <Address>: 以字符格式显示内存内容。
dp <Address>: 以指针格式显示内存内容。
db <Address>: 以字节格式显示内存内容。

查看寄存器内容示例:

0:000> r
rax=0000000000000001 rbx=0000000000000002 rcx=0000000000000003
rdx=0000000000000004 rsi=0000000000000005 rdi=0000000000000006
rip=00007ff6a0b10e5a rsp=00000000005ff8f8 rbp=00000000005ff900r8=0000000000000007  r9=0000000000000008 r10=0000000000000009
r11=000000000000000a r12=000000000000000b r13=000000000000000c
r14=000000000000000d r15=000000000000000e
iopl=0         nv up ei pl nz na pe nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202

查看特定寄存器内容:

0:000> r rax
rax=0000000000000001

1.4 查看堆栈

k: 显示当前堆栈调用。
kb: 显示带参数的堆栈调用。
kp: 显示带参数和调用约定的堆栈调用。
模块和符号

lm: 列出加载的模块。
lmv: 列出加载的模块及其详细信息。
.reload: 重新加载符号。
x <Module>!<Symbol>: 查找符号。

5. 查看变量

dv: 显示局部变量。
dt <Type>: 显示类型信息。
dps <Address>: 显示指针和符号。
输入/输出
!handle: 列出当前进程的句柄。
!process: 列出当前系统的进程。
!thread: 列出当前进程的线程。
!heap: 显示堆信息。

2. 高级调试命令

2.1 调试扩展

!analyze -v: 分析崩溃转储文件。
!locks: 显示系统中的锁。
!vm: 显示虚拟内存信息。
!poolused: 显示池使用情况。

2.2 脚本和自动化

.scriptload : 加载 JavaScript 脚本。
.scriptrun : 运行 JavaScript 脚本。
.foreach (variable {expression}) {commands}: 在表达式结果上循环执行命令。

2.3 调试器命令

.logopen : 打开日志文件。
.logclose: 关闭日志文件。
.cls: 清除调试器窗口。

2.4 内核调试

!process 0 0: 列出所有进程。
!thread <ThreadAddress>: 显示线程信息。
!drvobj <DriverName>1: 显示驱动程序对象信息。

常用快捷键

F5: 继续执行程序(相当于 g)。
F10: 单步执行,不进入函数(相当于 p)。
F11: 单步执行,进入函数(相当于 t)。
Ctrl+Break: 中断程序执行。

这些命令只是 WinDbg 功能的冰山一角。WinDbg 提供了大量的命令和扩展,用于各种调试需求。建议结合具体的调试场景,查阅 WinDbg 官方文档和帮助文件,以充分利用其强大功能。
(未完待续)

http://www.lryc.cn/news/417423.html

相关文章:

  • Ubuntu(20.04 LTS)更换镜像源
  • golang使用 copier对象复制时进行类型转化
  • 英特尔18A制程技术分析解读
  • 【百度面试算法题】2024-08-02
  • OSPF基础
  • leetcode 958.二叉树的完全性检验
  • Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?
  • 基础岛 - 8G显存验证书生·浦语大模型的Demo
  • Jangow靶机攻略
  • Vue项目通过宝塔部署之后,页面刷新后浏览器404页面
  • Java一一一简易图书管理系统
  • Ubuntu配置carla docker环境
  • 超越sd3!比肩Midjourney-v6?AI绘画大模型FLUX1.0详细评测与本地部署方法(附安装文件)
  • 帆软填报报表单元格根据其它单元格内容决定另外的单元格可筛选什么值
  • 一键浪漫的回忆:微软开源的修复工具!!【送源码】
  • 力扣-240.搜索二维矩阵(2)
  • Python推导式和生成器表达式
  • 比较支持向量机、AdaBoost、逻辑斯谛回归模型的学习策略与算法
  • Android顶部标题栏自定义,添加按钮
  • Spring Boot 整合 Dubbo3 + Nacos 2.4.0【进阶】+ 踩坑记录
  • 浙江省食品安全管理员题库及答案
  • C++ 几何算法 - 求两条直线交点
  • Linux操作系统简介
  • 【Python机器学习】回归——缩减系数来“理解”数据
  • 组件设计原则
  • 简单搭建vue项目
  • ctfhub Bypass disable_function
  • 【Qt】探索Qt网络编程:构建高效通信应用
  • 【Android Studio】原生应用部署第三方插件(探针)
  • 嵌入式学习之路 15(C语言基础学习——指针操作一维字符型数组)