【翻译 Windbg - 4】Windbg 起步

简介:   原文 http://blogs.msdn.com/johan/archive/2007/01/11/how-to-install-windbg-and-get-your-first-memory-dump.

 

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} h2 {mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"标题 2 Char"; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:2; font-size:18.0pt; font-family:宋体; mso-bidi-font-family:宋体; font-weight:bold;} a:link, span.MsoHyperlink {mso-style-unhide:no; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} p {mso-style-unhide:no; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} span.2Char {mso-style-name:"标题 2 Char"; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"标题 2"; mso-ansi-font-size:18.0pt; mso-bidi-font-size:18.0pt; font-family:宋体; mso-ascii-font-family:宋体; mso-fareast-font-family:宋体; mso-hansi-font-family:宋体; mso-bidi-font-family:宋体; mso-font-kerning:0pt; font-weight:bold;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1864778569; mso-list-template-ids:389324362;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

原文

http://blogs.msdn.com/johan/archive/2007/01/11/how-to-install-windbg-and-get-your-first-memory-dump.aspx

作者

tess

翻译

AloneSword

译文

http://blog.csdn.net/alonesword/

 

 

如何安装 windbg 与获取第一个转储文件

安装 windbg

Windbgasp.net 支持工程师必备的一种工具,它是免费的,可以在

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

<adplus>

<Settings>

<RunMode>CRASH</RunMode>

    </Settings>

    <PreCommands>

        <cmd>!load clr10/sos.dll</cmd>

    </PreCommands>

    <Exceptions>

        <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

 

目录
相关文章
|
4月前
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
127 0
|
安全 数据库 数据安全/隐私保护
|
安全 网络安全 Windows
[病毒分析]WinDBG实战教学(1)(三)
[病毒分析]WinDBG实战教学(1)
208 0
[病毒分析]WinDBG实战教学(1)(三)
|
安全
[病毒分析]WinDBG实战教学(1)(二)
[病毒分析]WinDBG实战教学(1)
148 0
[病毒分析]WinDBG实战教学(1)(二)
|
NoSQL Python Windows
开源代码分析技巧之二——gdb单步调试
在海量的源码面前,如何更好的切入到源码,锁定我们需要的那一行,有时显得格外重要。
277 0
|
安全 数据安全/隐私保护 Windows
|
存储 Java .NET
|
Windows
Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因。这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等)。说它是比较严重,是因为毕竟Windows还提供了dump文件给用户分析,至少能比较容易的找到错误的原因。
1644 0
|
Windows
Windbg内核调试之三: 调试驱动
这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要占用大量的系统资源,对于和我一样急性子的朋友来说这是不可接受的:).
1291 0