zl程序教程

您现在的位置是:首页 >  其它

当前栏目

【翻译 Windbg - 4】Windbg 起步

翻译 起步 windbg
2023-09-27 14:26:38 时间

www.microsoft.com/whdc/devtools/debugging/default.mspx 获得下载版本。本教程只是讲解了很少的一部分内容,但是如果你对应用程序背后所运行的内容感兴趣的话,那么windbg 就是你最好的朋友。关于如何配置windbg 应用程序,请链接到相应的文档进行查看,特别值得一提的是关于符号章节的内容。

另外,如果想使用sos的扩展命令的话,可以在framekwork的安装目录中找到该文件,就framework 2.0 来说,该文件位于“c:/Windows/Microsoft.Net/Framework/v2.0.50727”,也可以将该文件拷贝到windbg所在目录,以便更好的访问。

获取一个内存转储

Windbg 既可在内存转出中进行分析,也可以附加到一个执行进程中进行分析。我主要处理内存转储,因为它更容易从用户哪儿获得,而不是访问服务器。我可能在其他的文章中谈论一下关于轻量级调试工具的内容,但是这里我们只谈论内存文件转储分析。

Vista

如果你的系统运行在window vista上,可以简单的通过任务管理器来创建一个转储文件。简单的打开“进程”列表,在你需要的进程上右键,选择“创建转出文件”即可。

Adplus

对于其他的系统,如果需要创建指定条件的转出文件,我推荐你使用脚本文件 adplus。它是随着windbg安装的,并且是可以从命令行中运行的。Adplus也可以使用一定的参数,但是对于基础的操作,有两件事情需要注意:

1.  何时获取转储文件

2.  需要转储的进程的id 或 名称

通过adplus 获得的转储文件将会存储到windbg安装目录的子级目录中。

例如:

Adplus -crash -pn w3wp.exe

运行该命令可以在任何一个命名为 w3wp.exe 的进程被终止或被回收时,形成一个完整的转储文件。通过如下命令,也可以创建一个在第一次异常发生时得到最小转储文件。

Adplus -crash -pn  w3wp.exe -NoDumpOnFirst

像上面一样,但不是最小转储文件:

Adplus -hang -p 2960

这个命令会立即得到一个关于进程ID 为 2960的完整转储文件,该命令一般用在进程被挂起或无响应时,记住这个名字。

高级Adplus

假设想定位到一个特定的异常,就可以使用一个配置文件。如下是一个实例,它将在发生System.Runtime.InteropServices.COMException 时得到一个完整的内存转储文件,只需要拷贝如下的代码到记事本中,保存为MyConfig.cfg


        Option NoDumpOnFirstChance /Option

        Option NoDumpOnSecondChance /Option

    Config

        !-- This is for the CLR exception. --

        Code clr /Code

            Action1 Log /Action1

                CustomActions1 !clr10/sos.cce System.Runtime.InteropServices.COMException 1;j($t1=1) .dump /ma /u c:/dumps/exceptiondump.dmp;gn;gn CustomActions1

                ReturnAction1 GN /ReturnAction1

            Actions2 Void /Actions2

                ReturnActions GN /ReturnAction2

    /Config

    /Exceptions

/adplus


如您所见,只需要简单的调整一下配置文件,就可以得到其他异常信息的转储文件。转储文件存储在c:/dumps文件夹下,同时必须保证该文件夹存在。当你准备好后,就需要简单的运行如下语法的命令:

Adplus -c myconfig.cfg -pn w3wp.exe

通过终端会话调试系统

如果你无法直接访问服务器,你要么通过附加非入侵方式,要么定制命令的计划任务。这些看起来有点复杂,但是在如下这篇知识库文章中描述了完整详细的描述了制作方法: http://support.microsoft.com/default.aspx/kb/323478

我想这就是现在所有的内容了。

/Johan

关键字:windbg, adplus, Debugging School,Asp.net

 


Windbg内核调试之三: 调试驱动 这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要占用大量的系统资源,对于和我一样急性子的朋友来说这是不可接受的:).
Windbg内核调试之二: 常用命令 运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下面, 将介绍最常用的一些指令, 使初学Kernel调试的朋友们能有一个大致的了解.
Windbg程序调试--转载 WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。 WinDbg是微软很重要的诊断调试工具: 可以查看源代码、设置断点、查看变量, 查看调用堆栈及内存情况。