现在位置: 首页 > WinDbg
在如下的情况下需要使用这样的技巧: 1. 生产环境上出问题, 我们需要抓取dump文件, 在线下去debug. 2. 正在运行一大堆测试, 当其中一个崩溃的时候, 不希望在运行时干扰整个测试动作, 仅需要收集一些测试信息. 3. 问题在连接到debugger后无法重现. 简单来说, 就是你希望在对环境影响最小的前提下, 抓取尽可能多的信息. 为了满足这种需求, 最好的方式是配置 just-in-time (JIT) debugger , 让它在进程崩溃的任何时候能够: 启动, 抓...
阅读全文
2013-11-08 22:37 工业·编程 ⁄ 共 1366字 暂无评论
什么是内存转储文件, 即dump? ====================== 内存转储文件时一个进程或系统在某一给定的时间的快照. dump文件的种类有很多, 不同种类的dump文件包含不成程度的数据. 用户态内存转储文件 VS 内核态内存转储文件 ====================== 如果你抓一个进程的dump文件, 那么你抓取的是用户态的dump文件. 如果你抓取整个系统的内存dump文件, 那么你抓取的是内核态的dump文件. 一般来说, hung, crash, memory leak, exceptio...
阅读全文
2013-11-06 22:31 工业·编程 ⁄ 共 1875字 暂无评论
扩展命令(Extension Command)用于实现针对特定调试目标的调试功能. 与标准命令和元命令是内建在WinDBG程序文件中不同, 扩展命令式实现在动态加载的扩展模块(DLL)中的. 利用WinDBG的SDK, 用户可以自己编写扩展模块和扩展命令. WinDBG程序包中包含了常用的扩展命令模块. 存放在以下几个子目录中. NT4CHK: 调试目标为Windows NT 4.0 checked版本时的扩展命令模块. NT4FRE: 调试目标为Windows NT 4.0 free 版本时的扩展命令模块. W...
阅读全文
2013-11-04 22:29 工业·编程 ⁄ 共 1787字 暂无评论
元命令(Meta-Command)用来提供标准命令没有提供的常用调试功能, 与标准命令一样, 元命令也是内建在调试器引擎或者WinDBG程序文件中的. 所有元命令都已一个点(.)开始, 所以元命令也被称为点命令(Dot Command). 按照功能, 可以把元命令分成如下几类. 显示和设置调试会话和调试器选项. 用于符号选项的.symopt- Set Symbol Options 用于符号路径的.sympath- Set Symbol Path, 和.symfix- Set Symbol Store Path. 用于程序源文件...
阅读全文
2013-11-03 22:50 工业·编程 ⁄ 共 390字 暂无评论
.reload /f 命令会强制debugger立即解析所有module相关联的符号文件. 于是我就想, 有没有什么命令可以立即去掉所有module相关联的符号文件呢? 找了半天也没找到, 最后发现.reload /f的反命令就是.reload 其他形式 =========== .reload <module> 抛弃模块<module>的符号信息. 任何解析符号的动作都将从硬盘上重新加载符号文件. .reload /f <module> 强制调试器立刻加载并且解析与模块module相关的符号文件....
阅读全文
2013-11-02 22:27 工业·编程 ⁄ 共 1907字 暂无评论
WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令. 标准命令 =============== 标准命令用来提供适用于所有调试目标的基本调试功能. 所有基本命令都是实现在WinDBG内部的, 执行这些命令时不需要加载任何扩展模块. 大多数标准命令是一两个字符或者符号, 只有version等少数命令除外. 标准命令的第一个字符是不分大小写的, 第二个字符可能区分大小写. 迄今为止, WinDBG调试器共实...
阅读全文
Crash都是发生在某一函数中, 而95%的crash都是由下面两种情况中的一种导致的: 发生crash的函数获得了错误的参数. 发生crash的函数使用了损坏了的内部数据. 代码的执行过程是对数据进行变化的过程. 对同一段代码, 在相同环境下, 如果使用的数据都相同, 那么执行的结果肯定是唯一的. 如果函数发生崩溃, 那么肯定是使用到的数据跟理想情况有差别. 函数使用的数据来源: 一是函数传入的参数, 二是函数体引用到的成员变量或全局变...
阅读全文
如果有出错程序的dump, 哪怕dump不是在合适的时机获取的, 也可以分析出有用的信息. 通过vertarget查看系统版本和系统运行了多长时间. 通过!peb查看环境变量的情况. 由于很多第三方软件都习惯把自身路径添加到环境变量中, 所以这里很多时候可以看出一些已经安装的软件. 同时还能看到当前进程所加载的DLL和对应路径. 检查DLL和对应路径时, 可以重点检查如下的一些项目: 有没有防毒程序的DLL加载. 有没有类似...
阅读全文
2013-10-30 22:13 工业·编程 ⁄ 共 7975字 暂无评论
1、 !address eax查看对应内存页的属性 2、 vertarget 显示当前进程的大致信息 3、!peb 显示process Environment Block 4、 lmvm 可以查看任意一个dll的详细信息 例如:0:026 lmvm msvcrt (deferred)表示察看msvcrt.dll的信息,但是没有加载 symbol可以通过.reload命令来加载 5、.reload /!sym 加载符号文件 6、 lmf 列出当前进程中加载的所有dll文件和对应的路径 0:018> lmf 7、 r 命令显示和修改寄存器上的值 r命令显示和...
阅读全文
2013-10-10 21:51 工业·编程 ⁄ 共 1443字 暂无评论
    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 1. WinDbg介绍: Debugging Tools and Symbols: Getting Started http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx A word for WinDbg http://mtaulty.com/communityserver/blogs/mike_taultys_blog/archive/2004/08/03/4656.aspx 2. WinDbg下载...
阅读全文