windebug一些基本使用命令
2016-07-10 11:51
274 查看
查看当前线程的调用堆栈
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能够得到的最多的信息。是一种折中方案。
(转载)
相关文章推荐
- Memcached Java Client API详解
- CSS定位中的必须深究的常用技法
- uva12657 移动盒子
- 周志华《机器学习》笔记:第1章 绪论
- 理解Fragment生命周期
- Vs2013集成EF和SQLite的步骤(一)
- Tomcat8 配置Oracle11g数据源
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- python学习——filter
- JAVA代理模式--动态代理
- photoshop学习目录
- Android视频播放
- 用WindowBuilder编写SWT 桌面应用程序
- 输入输出流类iostream常用函数解析
- 期权相关业务介绍01
- 那些年用node接入微信走过的坑之(一)---成为开发者
- [北航软工教学] 教学计划大纲
- TestNG的常用注解
- 抽象类和接口问题
- neuq oj C++ 二维数组1064: 谭浩强C语言(第三版)习题8.4