现在位置: 首页 > 软件调试
2013-11-12 22:42 工业·编程 ⁄ 共 112字 暂无评论
命令很简单:     ~0s    切换到0号线程     ~3s    切换到3号线程 一些其他命令:     ~*e !clrstack    遍历每个线程, 依次输出它们的托管调用栈.     !threads          查看所有的托管线程
阅读全文
在WinDBG的Command窗口中, 默认情况下, 你输入的命令很容易和该命令以及附近命令的输出混杂在一起. 在寻找之前命令的结果的时候, 眼睛看起来会很累. WinDBG提供了一个选项, 通过这个选项, 你可以把命令输入与输出的颜色进行设置. 选项名: Prompt level command window text Prompt level command windows text background 点击菜单View->Options... 配置后的结果如下: 好了, 你的眼睛可以舒服一点了.
阅读全文
从本质上说, 这个功能是WinDBG的日志功能的一个应用而已. WinDBG的log功能可以记录你在WinDBG中使用的每一个命令以及其对应的输出. 那么如何开启WinDBG的日志功能呢? 首先, 可以选择从命令行中启动WinDBG. 举例, 使用下面的带有-logo参数的命令: windbg.exe -logo c:\logfile.txt 其次, 如果你已经在一个debug session里了, 你可以使用.logopen命令来开始记录. 回答本文标题中的问题,  步骤如下: 第一步, 开启日志记录: ...
阅读全文
在如下的情况下需要使用这样的技巧: 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-07 22:36 工业·编程 ⁄ 共 598字 暂无评论
Symbol能够包含以下的一些信息: 全局变量 局部变量 函数名称, 参数 结构体 源代码行号 有三种类型的Symbol export symbols 是dll本身的一部分. 比如ntdll.dll和kernel32.dll暴露出很大一部分他们的函数, 以便于他们能够像API一样地调用, 但是大多数的dll会有很少的exported symbols. 大致上, export symbol不包含函数的参数信息, 并且因为暴露的函数实在太少, 所以当你只有export symbol的时候不能确定栈信息的正确...
阅读全文
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调试器共实...
阅读全文