WinDbg命令三部曲】的更多相关文章

本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 内置帮助命令 调试会话命令 一般信息命令 符号加载命令 模块加载命令 异常分析命令 进程信息命令 线程信息命令 堆栈信息命令 扩展帮助命令 日志扩…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 扩展加载命令 SOSEX扩展命令 SOSEX 调试命令手册 扩展加载命令 命令 描述 .load .load sosex .load C:\Pro…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 扩展加载命令 对象审查命令 数据结构审查命令 代码堆栈审查命令 垃圾回收历史审查命令 诊断工具命令 SOS 调试命令手册 扩展加载命令 命令 描述…
WinDbg 命令三部曲:(一)WinDbg 命令手册 WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册 WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册…
WinDbg 命令三部曲:(一)WinDbg 命令手册   本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册> <WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册> 导航目录 内置帮助命令 调试会话命令 一般信息命令 符号加载命令 模块加载命令 异常分析命令 进…
3.进程与线程: 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 3.1. 进程命令 进程命令包括以下:显示进程列表.进程环境块.设置进程环境. 多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|..tlist.!process和!dml_proc |  [进程号] 请注意这里的定语:被调试进程列表.大多数情况下调试器中只有一个被调试进程,但可以通过.attach或者.create命令同时挂载或创…
在Windbg命令脚本一文里,我们介绍了命令脚本语言的的组成要素,在本文里将对语句进行展开的讲解.这些语句主要是流程控制的语句,比如我们常见的条件分子和循环语句等. ; (命令分隔符) 分号(:)字符用于在一行中分隔多个命令. Command1 ; Command2 [; Command3 ...] 参数 命令1,命令2,… 要执行的命令. 命令从左到右依次执行.除非另有规定,否则单行上的所有命令都引用当前线程.如果命令导致线程执行,则该行上的其余命令将被延迟,直到该线程在调试事件上停止.少数命…
命令脚本,就是将完成某个特定任务的相关命令组合在一起,保存在脚本文件里,加载到Windbg里执行,达到我们的目的.你可以理解为脚本就是一种语言,就像c或者汇编,但是他不需要编译器将其编译为可执行文件,而是由解释器将其内容翻译为对应的动作.而Windbg的脚本就是利用Windbg作为解释器,将脚本内容翻译为实际的动作.既然可以作为一种语言,那么它就具有一般语言通常包含的要素:数据类型.变量.表达式.语句.函数等,下面我们分别简单讲一下. 一.数据类型关于数据类型,Windbg的帮助里没有明确列举,…
我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式  windbg命令行使用以下语法: windbg [ -server ServerTransport | -remote ClientTransport ] [-lsrcpath ] [ -premote SmartClientTransport ] [-?] [-ee {masm|c++}] [-clines lines] [-b] [-d] [-aExtension] […
From:http://blog.csdn.net/joeleechj/article/details/10020501 命令                                          windbg                                   gdb 附加                                          attach                                      attach 脱离附加 …
//断点相关 bp + 地址 设置断点bl  显示已经设定的断点bu + 地址 设置断点,但是这种类型断点再下一次启动时被记录bc 清除断点对于断点范围,可以用*匹配,-表示一个范围,表达多个可用,号隔开 程序入口伪寄存器WinDbg里有个伪寄存器叫$exentry,里面记录了程序的入口点.所以我们只要在命令输入栏里输入bp $exentry(bp就是用来下断点的命令,详细用法可以参考WinDbg的帮助文档) //调试符号 ld kernerl32 //加载kernerl32模块的符号lm   …
使用windbg导出dump文件 .dump /ma D:\testdump.dmp gchandles命令列出句柄,同时列出句柄引用的对象,演示代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Data; using System.Runtime.InteropServices; publ…
WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令. =============== 标准命令 =============== 标准命令用来提供适用于所有调试目标的基本调试功能. 所有基本命令都是实现在WinDBG内部的, 执行这些命令时不需要加载任何扩展模块. 大多数标准命令是一两个字符或者符号, 只有version等少数命令除外. 标准命令的第一个字符是不分大小写的, 第二个字符可能区分大小写. 迄今为止, WinDBG调试器共实…
  DLL 该扩展仅在内核模式下使用,即使它是在Ext.dll中的. Windows NT 4.0 Ext.dll Windows 2000 Ext.dll Windows XP和之后 Ext.dll 注释 如果不提供参数,调试器会列出所有进程,以及时间和优先级统计.这和使用!process @#Process 0 作为CommandString值一样. To terminate execution at any point, press CTRL+BREAK (in WinDbg) or CT…
4.查看调用栈 k命令:显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. 我们如何来判断函数的栈指针,参数地址和局部变量地址呢? 举一个简单的windbg的kv命令输出:ChildEBP RetAddr  Args to Child              03b1f9c4 0032549e 00e1b5f0 00e259f8 7c900059 如上所示,ebp是栈的指针,其中ebp+4保存的是函数返回地址,因此ebp+8(00e1b5f0 )开始就是…
一.windbg查看内存命令: 当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令最常见的格式就是根据指定的类型信息来显示存储在某地址中的数据. 调试器并不会去猜测这个地址上存储的是什么数据, 因为在大多数情况下猜测都是错误的. 所以需要用户显式地制定按照何种格式来解析数据. 命令格式如下: 语法:d [type][address range] /…
一.windbg 常用知识: 1. Windbg中的调试命令,分为三种:基本命令,元命令和扩展命令.基本命令和元命令是调试器自带的,元命令总是以“.”开头,而扩展命令是外部加入的,总是以感叹号“!”开头 基本命令最少了,大概40个左右.列举所有的基本命令,使用如下命令: ? 元命令有一百多个,使用下面命令列举所有元命令: .help  [/D] 小技巧: 标准命令帮助 ? ? /D 元命令帮助 .help .help /D .help /D a* 扩展命令帮助 !help !help savem…
以下以skinhgy为例,windbg附加运行 1. bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点. 但是使用bp的问题在于: 1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效: 2)WinDBG 不会把bp断点保存工作空间中 bp  Address或bp 伪寄存器或bp符号名称: 0:000> x Si…
http://blog.csdn.net/wesley2005/article/details/51501514 目录: (1) u命令(反汇编) (2) dt命令(查看数据结构) (3) ln命令(查找就近的符号) (4) x命令(显示模块的符号) (5) k命令(显示调用栈) (6) d命令(以数据方式显示) (7) b命令(断点) (8) lm lmvm (显示模块信息) (9) .reload (重加载模块) (10) !process !thread .process .thread…
调试器命令窗口是windbg中的主要调试信息窗口.可以在此窗口中输入调试程序命令并查看命令输出.Windbg的命令窗口是我们进行调试时,主要打交道的窗口.界面如下 对于windbg,“调试器命令窗口”是指标题栏中标记为“命令”的窗口.此窗口包含两个窗格: 在底部的小窗格中,输入命令.  在上面的大窗格中,可以查看命令输出. 打开和关闭命令窗口 通常我们通过打开exe程序.附加到进程或打开dmp文件进行调试时,会自动打开此窗口,但很有可能我们关闭掉了这个窗口,有如下重新打开方式: 点击工具栏按钮…
五.源文件行语法 可以将源文件行号指定为MASM表达式的全部或部分.这些数字计算出与该源代码行对应的可执行代码的偏移量.不能使用源代码行作为C++表达式的一部分.必须用重音符(`)将源文件和行号表达式括起来.以下示例显示源文件行号的完整格式. `[[Module!]Filename][:LineNumber]` 如果有多个文件具有相同的文件名,则文件名应包括整个目录路径和文件名.此目录路径应该是编译时使用的路径.如果只提供文件名或路径的一部分,并且存在多个匹配项,则调试器将使用找到的第一个匹配项…
本文介绍使用调试器命令必须遵循的语法规则.使用Windbg调试时,应遵守以下一般语法规则: 您可以在命令和参数中使用大小写字母的任意组合,除非在本节的主题中特别指出. 可以用一个或多个空格或逗号(,)分隔多个命令参数. 通常可以省略命令与其第一个参数之间的空格.如果这种省略不会造成任何歧义,则可以经常省略其他空格. 阅读本文中的命令引用注意以下事项: 粗体字体的字符表示必须逐字键入的项目. 斜体字体的字符表示参考主题“参数”部分中解释的参数. 括号([xxx])中的参数是可选的.带有竖线([XX…
(1)!runaway命令显示每个线程消费的时间 参考:http://blog.csdn.net/hgy413/article/details/7564252 (2)!wow64exts.sw 关闭64位重定向,切换到32位模式下查看dump. 当在64位系统下不能正常查看dump时,可以使用此命令. 参考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384163(v=vs.85).aspx…
srv*C:/symbol*http://msdl.microsoft.com/download/symbols;D:\Desktop\CMS_Dump symck //检查pdblm //显示pdb //写入日志文件.logopen d:\output.txt.logclose.logfile !heap -s //显示堆信息!heap -a 019e0000 //查看泄漏的堆信息!heap -flt s size //打印所有内存变量(有用) !address 打印内存信息(有用)Large…
Windows 内部的各种结构通常都会由双向链表串起来,用 !list 命令查看这些结构非常方便. 比如查看系统中的所有进程: lkd> !list -t nt!_LIST_ENTRY.Flink -x "dt nt!_EPROCESS UniqueProcessId ImageFileName @@(#CONTAINING_RECORD(@$extret, nt!_EPROCESS, ActiveProcessLinks))" poi(nt!PsActiveProcessHea…
二.字符串通配符语法 一些调试器命令具有接受各种通配符的字符串参数.这些类型的参数支持以下语法功能: 星号(*)表示零个或多个字符. 问号(?)表示任何单个字符. 包含字符列表的括号([])表示列表中的任何单个字符.列表中只有一个字符匹配.在这些括号中,可以使用连字符(-)指定范围.例如,prog[er-t7]am匹配“progeam”.“program”.“progsam”.“progtam”和“prog7am”. 数字符号(#)表示前面零个或多个字符.例如,lo#p与“lp”.“lop”.“…
1.查看版本信息:version.vertarget. 2.查看模块信息:lm.!dlls.!lmvi等. 3.调用栈:用k命令显示调用栈,用.frames命令切换栈帧. 4.内存操作:读内存用d命令,写内存用e命令. 5.自动分析:!analyze.!owner等. 6.符号命令:.reload加载符号, .sympath设置符号路径, !sym设置符号选项. 7.进程线程:!process显示进程信息:.process显示当前进程,或用.process /i切换当前进程:!peb显示进程环境…
!idt扩展显示指定的中断分配表(interrupt dispatch table (IDT))中的中断服务例程(interrupt service routine (ISR)) -a 没有指定IDT时,会以简短的格式显示目标机上所有处理器的IDT.如果指定了-a,则显示所有IDT的ISR.    简短方式: kd> !idt Dumping IDT: 37: 806e6864 hal!PicSpuriousService37 3d: 806e7e2c hal!HalpApcInterrupt…
转载收藏于:http://www.cnblogs.com/kekec/archive/2012/12/02/2798020.html  #调试命令窗口 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #使用gflags.exe工具(在windbg所在目录下),让某个进程启动时,拉取windbg进行调试 如下截图:当名称为captcomm.exe的进程启动时,拉起windbg调试 也可通过脚本命令来实现: // 运行c…
一.什么是应用程序域 操作系统由于其稳定性与可靠性的要求,都会使用隔离层,来确保运行在某个隔离层内的代码不会对其他隔扇层的代码产生影响.如Windows通过进程来实现这种隔离机制,所能的可执行代码.数据.以及其它资源都被包含在进程中,系统其他进程通常不允许对它们进行访问.同理..NET应用程序同样也是被局限在进程内执行,但是.NET还进一步引入了另一种逻辑隔离层,也就是我们这里说的应用程序域(AppDomain). 二.如何查看应用程序域 下面用一个例子看看应用程序域: using System…