WinDebug的一些基本使用命令

查看当前线程的调用堆栈

kb
查看全部线程的调用堆栈
~*kb

显示分析的详细信息
!analyze -v

继续执行
g

查看线程详细信息,例如线程入口地址
~21 (数字代表线程id)

查看变量地址
x 变量名,可以用通配符
例如
x 05memcorrupt!g_*

用给定类型查看对象
dt 类型名 地址
例如
dt CAppInfo 0x00032cb0

查看给定地址的内容
dd 地址
例如
dd 0x72726443

以下都是看内容,显示的形式不同而已
dc
du
dds
dpp
dpa
dpu

查看当前指令
u eip

查看给定地址的代码内容
u 7c80540f

查看加载的全部模块的起始地址
lm

同时包含起始和结束的信息

展开当前调用栈的内容
dd esp esp+100

注意这里要用正数,注意栈的生长方向

查看给定代码地址对应的模块

ln 0100156a

顺便提一下,我们不需要等到发生异常才能去调试一个进程。任何时候都可以通过运行vsjitdebugger.exe -p PID 来让调试器附着到任意进程,PID表示要调试的进程的ID.
事实上,Windows任务管理器使得调试进程更加容易,我们可以打开“进程”属性页,选择一个进程,并单击鼠标右键,然后选择“Debug”.

生成dump文件可以通过设置让系统在程序错误时生成,也可以手动生成dump文件
1、如何手动生成dump文件
程序崩溃(crash)的时候,可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件。

步骤:

1) 打开WinDBG并将之Attach 到crash的程序进程

2) 输入产生dump 文件的命令

WinDBG产生dump 文件的命令是 .dump ,可以选择不同的参数来生成不同类型的dump文件。

选项(1): /m

命令行示例:.dump /m C:\dumps\myapp.dmp

注解: 缺省选项,生成标准的minidump, 转储文件通常较小,便于在网络上通过邮件或其他方式传输。 这种文件的信息量较少,只包含系统信息、加载的模块(DLL)信息、 进程信息和线程信息。

选项(2): /ma

命令行示例:.dump /ma C:\dumps\myapp.dmp

注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。

选项(3):/mFhutwd

命令行示例:.dump /mFhutwd C:\dumps\myapp.dmp

注解:带有数据段、非共享的读/写内存页和其他有用的信息的minidump。包含了通过minidump能够得到的最多的信息。是一种折中方案。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WinDBG 是个非常强大的调试器,它设计了极其丰富的功能来支持各种调试任务,包括用户 态调试、 内核态调试、 调试转储文件、 远程调试等等。 WinDBG 具有非常大的灵活性和可扩展性, 用来满足各种各样的调试需求,比如用户可以自由定义调试事件的处理方式,编写调试扩展模块 来定制和补充 WinDBG 的调试功能。 尽管 WinDBG 是个典型的窗口程序, 但是它的大多数调试功能还是以手工输入命令的方式来 工作的。目前版本的 WinDBG 共提供了 20 多条标准命令, 140 多条元命令( Meta-commands), 和难以计数的大量扩展命令。学习和灵活使用这些命令是学习 WinDBG 的关键,也是难点。 上一章我们从设计的角度分析了 WinDBG ,本章将从使用(用户)的角度介绍 WinDBG 。我 们先介绍工作空间的概念和用法(第 1 节),然后介绍命令的分类和不同种类的命令提示符(第 2 节)。 第 3 节介绍不同的调试模式, 也就是如何与不同特征的调试目标建立调试会话。 第 4 节介绍 上下文的概念和在调试时应该如何切换和控制上下文。第 5 节介绍调试事件和如何定制调试事件 的处理方式。 从第 6 节到第 9 节我们将分别介绍如何在 WinDBG 中完成典型的调试操作, 比如控 制调试目标(第 6 节)、设置断点(第 7 节)、观察栈(第 8 节)以及如何观察和修改数据(第 9 节)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值