Silverlight实用窍门系列:45.Silverlight下使用WinDbg调试应用程序和查看异常情况

简介:
在本节中我们将讲述如何通过WinDbg工具对Silverlight应用程序进行调试,我们可以判断其无效过期的引用或者事件,将其释放掉,以达到及时释放内存的作用。

        首先我们需要下载WinDbg工具,在http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.402.msi即可下载32位的WinDbg工具。并且安装好这个工具。

        然后我们准备一个最简单的Silverlight应用程序,其Xaml代码如下:

复制代码
 
 
< UserControl x:Class = " SLDbg.MainPage "
xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
xmlns:d
= " http://schemas.microsoft.com/expression/blend/2008 "
xmlns:mc
= " http://schemas.openxmlformats.org/markup-compatibility/2006 "
mc:Ignorable
= " d "
d:DesignHeight
= " 300 " d:DesignWidth = " 400 " >

< Grid x:Name = " LayoutRoot " Background = " White " >
< Button x:Name = " btnClick " Width = " 70 " Height = " 40 " Content = " 点击我 " ></ Button >
</ Grid >
</ UserControl >
复制代码

        其Xaml.cs文件如下,绑定了一个事件:

复制代码
 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SLDbg
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this .btnClick.Click += new RoutedEventHandler(btnClick_Click);
}

void btnClick_Click( object sender, RoutedEventArgs e)
{
MessageBox.Show(
" 1111 " );
}
}
}
复制代码

        第一、对上面名为SLDbg,然后在web端中右键点击浏览,然后打开新安装好的WinDbg工具。

        第二、在WinDbg工具中,“File”->"Attach to  Process",在打开的页面中选中需要调试的当前运行iexplorer程序2011061118043883.jpg

(可以根据这个IE的进程ID判断,任务管理器的进程可以选中需要查看的进程ID)。

2011061118032953.jpg

        第三、将需要跟踪的进程附加到WinDbg中之后,我们首先要引入Sos.dll进行调试,所以在WinDbg的命令输入: .load C:\Program Files\Microsoft Silverlight\4.0.50826.0\sos.dll

2011061118050074.jpg

        第四、使用命令:!dumpheap -stat -type SLDbg,开始调试名为SLDbg的Silverlight应用程序,其界面如下:

2011061118051820.jpg

        第五、在上图中我们可以看到XX对象的内存地址是BBBBBB,所以我们输入以下命令:!dumpheap -MT BBBBBB去查看该对象的使用情况如下图所示:

2011061118053382.jpg

        第六、在使用命令:!dumpheap -stat -type SLDbg的时候,如果查看到有异常的话,查看其内存地址为MMMMMM,则通过命令 !pe MMMMMM,可以查看其具体出错原因。

        本实例采用VS2010+Silverlight 4.0编写。



本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/06/13/2078495.html,如需转载请自行联系原作者


相关文章
艾伟:Silverlight 2应用程序中XAP文件揭秘
概述 XAP文件是Silverlight 2应用程序编译打包后的一个文件,它是一个标准的zip压缩文件,包括了Silverlight 2应用程序所需的一切文件,如程序集、资源文件等。 本文将对Silverlight中的XAP文件进行详细的说明。
989 0
|
Web App开发 安全 .NET
一起谈.NET技术,保护您的 Silverlight 应用程序的安全
作为一名 Microsoft 服务顾问,我定期与客户和合作伙伴一起进行应用程序安全性讨论。 在本文中,我将介绍一些在这些讨论中提出的主题。 特别是,我将重点介绍编程人员在尝试保护 Silverlight 应用程序的安全时所面临的新挑战,而且我将考虑开发团队应该将其资源集中于哪些方面。
1204 0
|
前端开发 容器
一起谈.NET技术,使用 MEF 公开 Silverlight MVVM 应用程序中的接口
  下载代码示例   许多开发人员可能都将 Silverlight 视为以 Web 为中心的技术,但实际上,它已经成为构建任何应用程序的优秀平台。
933 0

热门文章

最新文章