【翻译 Windbg - 5】.Net 调试举例

 

<!--
/* 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;}
a:link, span.MsoHyperlink
{color:blue;
mso-themecolor:hyperlink;
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:宋体;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
mso-style-unhide:no;
mso-style-qformat:yes;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:21.0pt;
mso-char-indent-count:2.0;
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;}
.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:136337071;
mso-list-type:hybrid;
mso-list-template-ids:1393718016 348154530 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-text:%1、;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->

.Net 调试举例


原文


http://blogs.msdn.com/tess/pages/net-debugging-demos-information-and-setup-instructions.aspx


作者


tess


翻译


AloneSword


译文


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

 

.Net 调试举例——安装指南

这是一系列调试例程,帮您获得关于dotnet 应用程序的挂起,性能,内存或崩溃等类型问题的第一手经验。

 

这个示例是基于asp.net技术的,这就意味着安装此示例的开发环境中需要 iis 和 .net framework 2.0。

 

每个新的示例会有一些基础指南,但我还是故意的保留的其简洁性,以便你有更多的机会来探索自己的想法,同时如果您有其他想法我也会给一定的提示。

 

如果有充足的时间,我会将新的示例发布在
http://blogs.msdn.com/tess/
(我计划每个礼拜发布一个新示例)

 

所有的示例将使用同一个站点,因此所有的示例均安装在一个应用程序中。

 

注意:这些示例中将会引起高CPU使用率,高内存利用率和崩溃,因此请确保这些示例仅仅安装在开发环境中,系统挂起和服务崩溃不会影响到其他人。

 

安装

1、  下载示例站点(已附录在本帖后),解压缩文件到硬盘中的文件夹(备注:已经上传了一个不需要3.5 的新版本)

2、  添加一个新的iis虚拟目录,取名
BuggyBits

3、  定位到 http://localhost/BuggyBits/Default.htm
,确保虚拟目录设置正确;

4、  浏览公司信息站点:http://localhost/BuggyBits/CompanyInformation.aspx
以确保iis支持 aspx页面;

5、  从如下网址中下载并安装windows调试工具:

 http://www.microsoft.com/whdc/devtols/debugging/default.aspx    

6、  双击运行InternetConnections.reg,此文件作用于注册表(注意:如何注册表的风险由您自己承担,如果担心注册表文件稳定,可以使用 notepad 打开该文件并手动修改内容),用来改变外连接数量,也可使用Internet Explorer修改同样的站点。

7、  安装 tinyget(随IIS6.0资源包一起安装 http://support.microsoft.com/kb/840671
),我们可以使用该工具对部分文件进行压力测试以便产生挂起和内存泄漏问题;

 

工具和术语

每个示例/实验中,假设您对如下的技术非常熟悉:

 


Windbg


Windows系统上安装的调试器

该工具将默认安装到调试目录
”c:/program files/debugging tools for windows”


Adplus


自动获取内存存储的脚本,也安装在调试目录中。


Debuggers directory


默认目录: c:/program files/debugging tools for windows


SOS


调试托管的Dotnet扩展工具

该文件是随着framework 安装的,可以在framework安装目录 (c:/windows/Microsoft.NET/Framework/v2.0.5277) 中找到该文件,也可以简单的拷贝sos.dll文件到调试目录中即可。


Loading SOS


在windbg命令窗口中键入 .load
<path to sos>/sos.dll 来装载SOS;或通过 .loadby sos mscorwks (将从framework目录中加载)来加载;也可将sos文件拷贝到windbg的目录中,只需要键入 .load
sos 加载 


Setting up symbols


符号特征文件是为
本地/非dotnet 调试充分条件,也可以查看 本地/非dotnet 的堆栈部分内容。可以查看如下地址查看更多的信息:

http://blogs.msdn.com/tess/archive/2005/12/05/why-do-i-get-weird-function-names-on-my-stack-a-discussion-on-symbols.aspx

可以在windbg命令行中运行如下命令来设置符号文件路径:

.symfix c:/mycache

.reload

其中 c:/mycache 是本地符号文件的缓存路径。如果在windbg中选择存储工作空间信息,符号文件也会保存以便下次调试时使用。


Tinyget


“TinyGet 5.2(TinyGet.exe)” 是一个命令行工具,支持多线程和缓冲池的超文本客户端,可以使用 TinyGet 工具来测试、跟踪使用http的从客户端到服务端通讯。通过 TinyGet ,可以通过不同影响因素来自定义测试请求,包括用户验证方法、HTTP 版本和输出格式。可以使用脚本定制循环次数或多线程问题:

查看
http://support.microsoft.com/kb/840671/ 以获取更多的信息。

 

熟悉 sos和windbg 命令也是有帮助的,如下的引用文章也是非常有用的:

Install
Windbg

Getting
started - Part I

Getting
started - Part II

Advanced
commands

 

 

 

 

其他的实验指南:


实验指南


实验过程


.NET
Debugging Demos Lab 1: Hang


Walkthrough 


.NET
Debugging Demos Lab 2: Crash


Walkthrough


.NET
Debugging Demos Lab 3: Memory


Walkthrough


.NET
Debugging Demos Lab 4: High CPU hang


Walkthrough


.NET
Debugging Demos Lab 5: Crash


Walkthrough


.NET
Debugging Demos Lab 6: Memory Leak


Walkthrough


.NET
Debugging Demos Lab 7: Memory Leak


Walkthrough

 

附件:BuggyBits.zip

 

 

【附录1】:这是一系列的10个.net 调试实验中的第一个,这个实验会使用一个叫 BuggyBits 站点;

 

 

时间: 2024-09-20 00:02:03

【翻译 Windbg - 5】.Net 调试举例的相关文章

win7 windbg搭建双机调试环境

问题描述 win7 windbg搭建双机调试环境 使用串口,win7 32bit可以连接上接收调试信息,但x64不能接受到调试信息. 解决方案 会不会跟操作系统的版本有关系呢,我猜测 解决方案二: 是不是i串口不支持64bit 解决方案三: 找到原因了,因为ghost win7的关系,换个x64的win7就好了 解决方案四: 不要用封装的系统,容易因系统在精简时候造成环境部分功能的缺失,建议还是用原生旗舰版吧.

【翻译 windbg - 1】Getting started with windbg - part I (第一部分 1)

最近在看相关内容,作者写的相当不错,自己随手学习了一下,非常棒,顺便也锻炼一下自己的翻译能力(好久没有处理相关内容了,能力直线下降啊) 原文地址:   Getting started with windbg - part I Ok,在此之前随便写了一些帖子,关于"如何设置 windbg"和"如何查找OutOfMemoryException".我的重新复习一些基础内容,为了更好的使用这些特殊的工具. windbg基础配置: 1、 将sos.dll 从 framew

xp+WinDBG+VMware调试内核

呵呵,搞点突兀的标题而已.其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲手写一下.第一,把这个过程写一遍能加深印象,就算以后忘记了也可以有笔记查找,快速想起来.第二.网上的教程很多都是互相抄来抄去,连错误也抄过去了.很典型一个错误就是Baud Rate,前面还写115200,后面就写成了11520了,狂汗! 按照我这篇笔记写的步骤去做,绝对能够成功,并且还能大略地了解到为什么要这样做的原因.第1部分是步骤,如果不想看原因的,

.NET应用程序调试—原理、工具、方法

阅读目录: 1.背景介绍 2.基本原理(Windows调试工具箱..NET调试扩展SOS.DLL.SOSEX.DLL) 2.1.Windows调试工具箱 2.2..NET调试扩展包,SOS.DLL.SOSEX.DLL 2.3.调试系统的基本流程及架构(.NETDAC概念.mscordacwks.dll) 2.4.VisualStudio中集成扩展调试(更加细粒度的调试程序) 3.调试程序类型(客户端程序.服务端程序) 4.调试方式及场景 4.1.本机调试(Attach Process,调试器启动

&lt;转&gt;反调试技巧总结-原理和实现

一. 前言    前段学习反调试和vc,写了antidebug-tester,经常会收到message希望交流或索要实现代码,我都没有回复.其实代码已经在编程版提供了1个版本,另其多是vc内嵌asm写的,对cracker而言,只要反下就知道了.我想代码其实意义不是很大,重要的是理解和运用.    做个简单的总结,说明下实现原理和实现方法.也算回复了那些给我发Message的朋友.     部分代码和参考资料来源:1.<<脱壳的艺术>> hawking2.<<window

用WinDbg探索CLR世界 [3] 跟踪方法的 JIT 过程

过程 本来想按照 sos 的帮助文件上命令的分类逐步介绍 WinDbg 下使用 sos 调试 CLR 程序,但发现这样实在不够直观.索性改成根据我分析 CLR 的实际案例,step by step 介绍功能,这样结构上虽然混乱一点,但更加直观,也易于上手 :P 前面两篇文章里面分别介绍了 WinDbg 的调试配置和线程的基本概念,这篇文章将针对 JIT 编译对象方法的流程进行分析,逐步介绍如何使用 WinDbg 调试 CLR 程序. 用WinDbg探索CLR世界 [1] - 安装与环境配置用Wi

.NET程序调试技巧(一):快速定位异常的一些方法

  这篇文章主要介绍了.NET程序调试技巧(一):快速定位异常的一些方法,本文讲解了定位本机异常.在客户环境定位.net程序异常两方面的内容,需要的朋友可以参考下 作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.n

.NET程序调试技巧(一):快速定位异常的一些方法_实用技巧

作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.net程序异常,在客户环境定位SilverLight异常. 一:定位本机异常 在我们本机定位异常很容易.假设我们都是使用的的VisualStudio,那么只需要在调试

Windows调试工具入门—1

NetRoc http://www.DbgTech.net 引子 Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明,那么我会使用WinDbg来作为这一套调试工具的简称).我第一次接触是在三年前的一个内核驱动项目,由于进行了IDT中键盘鼠标中断的Hook,使用Softice调试时造成会造成影响,只得使用WinDbg通过串口进行双机调试.自此之后这个Windows平台下最为强大的调试工具一直是开发过程中的必备.这里我毫不掩饰的说"最强&qu