WinDebug的一些基本使用命令

查看当前线程的调用堆栈 

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

显示分析的详细信息(通常使用此命令就可以看到调用堆栈,注意保存发布程序的pdb等文件)
!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能够得到的最多的信息。是一种折中方案。
--------------------- 
作者:SurgePing 
来源:CSDN 
原文:https://blog.csdn.net/suxinpingtao51/article/details/11751997 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(工具)