window调试学习2——事后调试

事后调试有两个最基本的目标:1发现程序是在哪里崩溃的;2找出导致程序崩溃的原因。简单地说,就是要找到程序中导致崩溃的指令地址。

转储文件是进程状态的一个静态快照。因此,在转储文件上设置断点并进行单步调试是不可能的。

通过转储文件来进行调试可以作为一种手工调试方式。在手工调试方式中,我们只能查看机器的状态,你需要手工分析在程序中究竟是执行也怎样的代码才使得程序达到现有的姿态。显然,通过状态分析来构造代码的执行流程比在实时调试中分析代码流程要更为困难。然而,在使用转储文件时,我们仍然可以通过大量的调试命令来将程序的状态转换为一种易于分析的形式;并且在大多数情况下,只要有足够的耐心,总会找出问题的根源。


windbg命令

切换栈帧:.frame 切换栈帧,如.frame 1

查看类型指令: dt,如 dt this

查看栈指令: k,如 

显示局部变量: dv。显示本层局部变量信息

线程相关: ~ 

显示汇编指令: u

u 向下反汇编
ub向上反汇编
uf反汇编整个函数

写入汇编指令: a

显示进程/线程环境参数(!peb 和 !teb 命令)

dps 显示堆栈的所有内容


windbg基本使用

1.set

1.1 设置Symbol file path

file->symbol file path,

如:本应用pdb


1.2 设置source file path

file->source file path

如:本应用源码目录


2.开始

2.1将dmp文件拉至windbg界面

2.2输入命令,开始自动分析

!analyze -v


2.3详细报告

通过上面得到的简要报告,找到这一行,不一定文字一样,

如:stack_command: ~13; .ecxr; kb

将上面的命令输入,得到详细信息

再通过View->locals,可以看局部变量


利用WinDbg找出程序崩溃的代码行号

http://www.cctry.com/forum.php?mod=viewthread&tid=41078&fromuid=1817

WinDbg-如何抓取dump文件
http://www.cnblogs.com/netwy/articles/2520428.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值