WinDebug的一些基本使用命令
2015-05-18 16:31
302 查看
查看当前线程的调用堆栈
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能够得到的最多的信息。是一种折中方案。
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能够得到的最多的信息。是一种折中方案。
相关文章推荐
- WinDebug的一些基本使用命令
- WinDebug的一些基本使用命令
- windebug一些基本使用命令
- WinDebug的一些基本使用命令
- WinDebug的一些基本使用命令
- 关于git的一些使用方法和基本命令
- Linux系统上的文件类型及一些基本命令使用
- Java 中使用 MySql以及一些Mysql 基本的命令
- 关于git的一些基本使用命令
- Linux运维------Linux基本命令及一些快捷方式的使用(redhat)
- 网络相关的一些基本的命令的使用(ping、ifconfig、route、netstat)---Linux学习笔记
- 第一次使用git的一些基本命令
- MySql的一些基本使用及操作命令 (待更新)
- 你所需要知道的一些git 的使用命令:基本技巧
- linux的一些基本命令(用来记录自己使用过的一些命令)
- 自己总结的有关Oracle用户权限的一些基本命令
- linux 的命令使用及一些简单常用的命令
- 使用qt命令来编译的基本步骤
- Linux下一些使用到的命令
- 菜鸟学习linux笔记与练习-----一些初级命令以及基本用户管理