如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
UNLEASHINGTHEPOWEROFSHAREPOINT™AvePointconfidential.ThisdocumentcannotbedistributedinanyformwithoutpriorexpresswrittenconsentfromAvePointInc.PAGE\*MERGEFORMAT10Windbg入门培训Windbg介绍WinDbg是微软开发的免费源码级调试器。它经常用于Kernel模式调试和用户模式调试,调试Dump文件等。它可以用来观察和控制目标进程。对于用户态的进程,可以查看用户态内存空间和寄存器上的数据。对于不同类型的数据和代码,调试器提供了各种命令,方便把这些信息用特定的格式区分和显示出来。调试器还可以把一个目标进程某一时刻的所有信息写入一个文件(dump),直接打开这个文件分析,效果跟调试一个正在运行的进程是一样的。我们可以从ms网站找到这个工具并安装它到本地,在安装好windbg后,可以启动windbg.exe,然后按F1弹出帮助。这是了解和使用windbg的最好文档。每个命令的详细说明,都可以在里面找到。使用Windbg可以做如下操作:进程运行的状态和系统状态。比如进程运行了多少时间,环境变量是什么当前进程加载的所有EXE/DLL的详细信息反汇编某一个地址上的指令察看某一个内存地址是否可以读/些,内容是什么列举线程的callstack(需要symbol)切换到callstack上的任意函数的上下文,察看这个函数当前的局部变量对某一个地址上的信息,指定symbol中的某一个类型格式化地显示出来查看和修改内存地址上的数据或者寄存器上的数据通过简单命令查看格式化的系统信息,比如Heap,Handle,CriticalSection等等远程调试符号文件(Symbolfile):关联二进制数据和源码当用VSStudio编译生成EXE/DLL后,往往还会生成PDB文件。里面包含的是EXE/DLL的符号信息。比如EXE中某一个汇编代码对应到源代码中的函数名是什么,这个函数在源代码中位于什么文件的多少行。有了符号文件,当在调试器中试图读取某一个内存地址的时候,调试器会尝试在对应的PDB文件中配对,看这个内存地址是否有符号对应。如果能够找到,调试器就可以把对应的符号显示出来。这样极大方便了开发人员的观察。对于操作系统EXE/DLL,微软也提供了对应的符号文件下载地址。小例子(Sybmol.dmp):Windbg简单操作和符号文件使用效果不加载符号文件打开dump文件,输入~*Kb命令,查看效果,线程堆栈都是不可理解的地址符号;加载符号文件后,再执行同样命令,线程堆栈变成可以理解的字符模式。Windbg下载地址:http://www.microsoft.com/whdc/devtools/debugging/default.mspxWindbg基本操作介绍SRV*d:/symbols/*http://msdl.microsoft.com/download/symbols---设置符号文件查找路径,在windbgIDE环境中设置或者在环境变量中设置:_NT_SYMBOL_PATH=D:\Symbols;。WinDBG主要是以命令方式工作的,我们将概括性的介绍WinDBG的三类命令分类:标准命令、元命令(以点.开始)和扩展命令(以叹号!开始)。由于篇幅限制,我们只重点介绍Sos.dll所附带的扩展命令。标准命令~:---显示和控制线程的命令。~[id]s---此命令用来切换到某一特定线程。如~20s代表切换到ID为20的线程。|:---显示进程的命令。K:---显示非托管堆栈的命令。~*kb---显示所有线程堆栈(都是非托管的堆栈信息)lmf---列出当前进程中加载的所有dll文件和对应的路径元命令:.loadsos---加载Sos.dll扩展库文件每次打开windbg调试.net程序的dump时,我们都要输入此命令。它的用途是使得windbg可以支持托管代码(managedcode)的调试。.loadC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll.loadC:\Customer_Dll\sos.dll---加载客户环境的公共运行库文件.unload---卸载某个扩展库文件.reload---重新提取符号文件Sos.dll扩展命令:最强大的扩展命令功能还要数sos.dll中的命令,它是我们调试CLR程序的基础。下面介绍一些基本命令:!eeversion---显示显示公共语言运行库版本!help---