Atlas应用程序调试技巧

本文为翻译文章,原文地址:http://atlas.asp.net/docs/Overview/debug.aspx

     “Atlas”程序由服务器端代码和客户端代码组成,并且,浏览器可能会要去异步请求一些数据。那么,怎样才能Debug这样的web程序呢。本文将告诉你如何使用一些技术和工具来方便的完成这件事。

注:
除了Visual Studio和Internet Explorer,本文提及的一此程序是一些第三方的,微软不会提供支持的。请到这些工具的主页去阅读授权和支持信息。

为了更好的Debug,先对应用程序进行配置

要启用VS的Debug功能,请添加一个<compilation>元素在站点根目录的web.config文件中,并且设置debug属性为true。请参阅,ASP.NET Settings Schema, compilation element

None.gif<configuration>
None.gif    
<system.web>
None.gif        
<compilation debug="true">
None.gif            
<!-- etc. -->
None.gif        
</compilation>
None.gif    
</system.web>
None.gif
<configuration>
None.gif

当Degub启用后,“Atlas”会使用一个Debug脚本类,这个类库将提供附加的对话信息和一个下面将讲解的Debug帮助类。

在服务器端进行Tracing

如果你通过启用“partial rendering”进行服务器端Tracing来Debug页面(即页面中包含一个启用了EnablePartialRendering的ScriptManager和一个Mode为Conditional的UpdatePanel),那么你可以使用Trace视图(Trace.axd)来显示页面输出根踪信息。此时,你可以在页面一开始呈现时就看到根踪输出信息显示在页面的尾部,但是这些信息不会在异步Postback后进行更新,这是因为仅仅只有UpdatePanel的内容需要在变化时被更新。关于使用Trace viewer的更多信息,请参看 ASP.NET Trace.

捕获HTTP交互

当开发web应用时,观察服务器与客户端来回往返的HTTP交互是很有用的,有两个工具可以帮助我们干这件事:

      Fiddler. 这个工具工作原理是做为一个Proxy记录下所有HTTP交互的日志。它支持IE和其它的浏览器。使用Fiddler,你可以检测每个请求和响应,包括headers,cookies,和HTTP消息主体内容。
      Web Development Helper. 这个工具只能用于IE,但是它除了在日志中记录HTTP交互,还能查看HTML DOM,在一个分隔开了的窗口中显示trace信息,关闭应用,还能解码页面的View state。

Debug Helper类

当你在启用了Debug后编译你的应用程序,“Atlas”客户端类库会定义一个Debugging helper类,并且实例化一个全局的debug对象供使用。使用这个debug对象,你能在页面的尾部用易读的方式显示对象的信息,能显示trace messages,能使用断言,中断。如果你使用VS调试器附加到IE进程中,你也可以在Output窗口中查看跟踪信息。
下面的代码将显示输出一个对象的信息:

ExpandedBlockStart.gifContractedBlock.gifvar o = dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif    colors: 
dot.gif{
InBlock.gif        red: [
25500],
InBlock.gif        green: [
02550],
InBlock.gif        blue: [
00255]
ExpandedSubBlockEnd.gif    }
,
InBlock.gif    width: 
600,
InBlock.gif    title: 'debugging 
with "Atlas"'
ExpandedBlockEnd.gif}
;
None.gif
None.gifdebug.trace(
"output trace messages");
None.gifdebug.dump(o, 'object name', 
true, 'dot.gif ');
None.gif

Output:

output trace messages
... object name {Object}
... +colors {Object}
... ++red {Array}
... +++[0]: 255
... +++[1]: 0
... +++[2]: 0
... +++0: 255
... +++1: 0
... +++2: 0
... ++green {Array}
... +++[0]: 0
... +++[1]: 255
... +++[2]: 0
... +++0: 0
... +++1: 255
... +++2: 0
... ++blue {Array}
... +++[0]: 0
... +++[1]: 0
... +++[2]: 255
... +++0: 0
... +++1: 0
... +++2: 255
... +width: 600
... +title: debugging with "Atlas"

debug类提供了以下这些方法供使用:
debug.assert(condition, message, displayCaller) 
        判断condition参数是不是为true.如果为false,这个方法将使用一个Message box显示message参数。如果        displayCaller参数为true,那么调用者的信息也将显示出来。
debug.clearTrace() 
    清空输出.
debug.dump(object, name, recursive, indentationPadding) 
    在页面最后用易读的方式显示一个对象的信息。name属性用于在显示时作为显示的标签(等于是作为显示一大段对象的信息前作一个标题的作用),如果recursive为true,那么这个对象中的对象的信息也会递归显示出来。indentationPadding用于填充在每一行信息的起始处,起一个缩进的作用。
debug.fail(message) 
    中断调试器 (仅Internet Explorer).
debug.trace(text) 
    将text输出到trace.

对Internet Explorer进行配置

Internet Explorer normally ignores any problems it encounters in JavaScript. To enable debugging, from the Tools menu, select Internet Options. 默认情况下,IE会忽略掉JavaScript错误。为了支持Debug,请打开IE的Tools菜单,选择Internet Options,在Advanced选项页,清除Disable Script Debugging(Internet Explorer)和Disable Script Debugging(Other)复选框的选择,并选中Display a nofication about every script error.结果如下图所示:

 

将Visual Studio调试器附加到Internet Explorer

要调试客户端代码,你必须把一个调试器附加到IE进程去。当你在VS中使用F5或Start Debugging命令启动调试一个应用程序时,调试器会被自动的附加到IE进程。
当然你也可以把VS的调试器附加到一个正在运行中的应用程序。你可以这样来做,在Debug菜单,选择Attach to Process...,在Attach to Process对象框中,选择你想要附加调试器的IE的运行实例。

注:
如果IE被合适的配置了Debug选项,在附加调试器到IE实例进程的对话框中的类型列中,你将会看到Script,x86选项,如果你只看到x86选项,那么请检查你的IE配置。

当为IE进行了合适的脚本调试配置后,如果IE遇到一个脚本错误,而此时没有附加进来一个调试器,这时就会显示一个对话框,询问你是否要选择一个调试器附加到当前IE进程进行调试。你可以选择不附加而继续运行程序,也可以附加一个调试器步进调试当前的脚本代码。

一些已知的IE调试的问题和解决方案

      当VS调试器被附加到IE后,你可以在VS的Script Exlorer窗口中看到一个被调试的脚本的列表,(在Debug菜单中选择Windows-->Script Explorer)。从Microsoft.Web.Atals.dll中动态生成的Atlas的脚本库会作为一个以WebResource.axd?...开头资源呈现.一个已知的VS的bug会阻止你一开始就去打开这个文件,如果你在尝试打开这个文件时,VS显示出一个错误信息或当你双击这个文件名去打开这个文件时根本就没有反应,你可以先打开一个别的JavaScript文件,再去打开它。
      在调试器步进到一个Asp.net页面的代码中前,VS不允许你在这个页面中的<script>元素中设置一个断点。解决办法之一是设一个断点在方法调用处,然后步进到这个页面的Code中来,最后调试器停在该页的脚本代码的一行中,这时,你就可以正常的设置断点了, 另外一种让调试器能识别页面中脚本的方法是在页面文件中的一个方法中调用debug.fail()方法。当你调用这个方法时,调试器就会停止在调用debug.fail()的地方,然后,你就可以在任何其它地方设置断点了。第三种方法是把你写的所有脚本放在一个外部的JavaScript文件中(.js文件)。
      VS允许你在一个传统的JavaScript函数的第一行设置一个断点,但在“Atlas”使用的匿名方法中不行。如果匿名方法只有一行代码,或你本来就想在第一行设断点,这时,你可以在这个方法的第一行前插入一行空代码,然后在第二行设断点。

Firefox

Firefox没有集成到VS的调试器中,所以你不能用VS调试器步进调试客户端代码。 不过,你可以使用 Venkman 调试器, 它是Firefox的一个插件,还有另一个很有用的工具叫 Web Developer Extension, 它能让你查看DOM和CSS 样式.
Fiddler也能工作于Firefox.但是,你必须配置Firefox对于你本机8888端口路由HTTP请求,更多信息,请查阅 Configuring Clients 

转载于:https://www.cnblogs.com/think/archive/2006/03/30/362756.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 自动连接无限,hotplug应用实例:自动连接无线网

Linux内核提供了一种机制&#xff0c;使得有热插拔事件(比如插入或拔出U盘)发生时可以执行一个程序&#xff0c;在本文中我称之为hotplug程序。内核在调用hotplug程序时会传递一个命令行参数&#xff0c;这个参数是发生热插拔事件的子系统名称&#xff0c;常见的有usb, module,…

网络数据库的复制和同步(转摘)

数据库复本--网络数据库的复制和同步&#xff08;1&#xff09; 数据库复本是复制数据库的技术,利用这种技术,可以是数据库的几个拷贝保持同步。数据库的每个拷贝称为一个复本&#xff0c;并且每个复本都包含一个公共的表、查询、窗体、报表、宏和模块的集合&#xff1b;每个复…

【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

各位&#xff0c;上一篇基本概念和架构中&#xff0c;我们介绍了Window Azure ServiceBus的消息队列技术的概览。接下来&#xff0c;我们进入编程模式和详细功能介绍模式&#xff0c;一点一点把ServiceBus技术研究出来。 本章我们主要介绍ServiceBus的编程SDK编程入门。 首先…

linux octave源码安装,在Linux操作系统上安装Octave的方法

本文介绍在Ubuntu、Debian、Arch Linux、Fedora、OpenSUSE操作系统上安装Octave(也称GNU Octave)的方法&#xff0c;它还支持Flatpak方式安装。简介GNU Octave是一种用于科学和数学计算操作的解释性命令语言&#xff0c;它与Matlab兼容&#xff0c;支持各种扩展&#xff0c;允许…

C#做的一个加密/解密的类

C#做的一个加密/解密的类 大家要有兴趣&#xff0c;可以一起来讨论一下 WebService数据交互安全问题&#xff0c;以下的这个代码&#xff0c;可以用于Dotnet环境下的任何托管方式的应用程序&#xff0c;在实际应用中有两个实例。其中&#xff0c;有一个挂在Internet上的&#x…

【转】理解Azure订阅,账户,活动目录AD,租户等概念

理解Azure订阅&#xff0c;账户&#xff0c;活动目录AD&#xff0c;租户等概念 订阅是啥&#xff1f; 活动目录AD Active Directory啥是租户&#xff1f;订阅是啥&#xff1f; “An Azure subscription is a logical unit of Azure services that links to an Azure account,…

linux安装静默安装was7,WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)

WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)安装之前需要准备的文件&#xff1a;C1G35ML.tar.gz&#xff1a;WAS7.0安装包C1G36ML.tar.gz&#xff1a;WAS升级工具7.0.0-WS-WASSDK-LinuxX64-FP0000031.pak 7.0.0-WS-WAS-LinuxX64-FP0000031.pak &#xff1a;7.0.0.31升级包&…

Vb.Net实现图片合并(相框效果)

Vb.Net实现图片合并(相框效果) Imports System.DrawingImports System.Drawing.ImagingImports System.Drawing.Drawing2D Public Class ImgMerg Public Shared Function MergedImage(ByVal innerImgPath As String, ByVal outerImgPath As String, ByVal mergImgPath As St…

【转】Azure云存储及存储账户概述***

本文介绍下Azure云存储及存储账户。 1、什么是微软Azure云存储 微软Azure云存储是微软提供的云端数据存储服务&#xff0c;是一种可伸缩、持久化的数据存储服务&#xff0c;可以在Internet上被访问并按实际存储容量收费。它也可以被REST API访问&#xff0c;可以保存Azure云端…

插入法排序c语言程序,插入排序算法及C语言实现

插入排序算法是所有排序方法中最简单的一种算法&#xff0c;其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中&#xff0c;最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种&#xff0c;采用的方法是&#xff1a;在添加新的记录时&a…

5分钟能回答的人,年薪25万美金以上

据说&#xff0c;在美国&#xff0c;5分钟能回答这道题的人&#xff0c;平均年薪25万美金以上&#xff0c;题目如下&#xff1a;5个海盗抢到了100颗宝石&#xff0c;每一颗都一样的大小和价值连城。他们决定这么分&#xff1a; 1&#xff0e; 抽签决定自己的号码&#xff08;1&…

【转】Microsoft Azure存储服务:存储账户****

在正式使用 Microsoft Azure 存储服务之前&#xff0c;你至少需要有一个 Azure 订阅并创建「存储账户」。Azure 订阅账户可以访问和使用各种 Azure 服务&#xff0c;在有了 Azure 订阅之后便可以开始创建「存储账户」并开始使用前面存储类型与访问中曾介绍过的 blobs、表&#…

大学c语言常用语句意思,C语言常用语句

.printf函数调用的一般printf函数是一个标准库函数&#xff0c;它的函数原型在头文件“stdio.h”中。但作为一个特例&#xff0c;不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为&#xff1a;printf(“格式控制字符串”, 输出表列)其中格式控制字…

2004-4-3+ asp.net编程环境的配置

想要在本地机上编写并运行测试asp.net程序&#xff0c;必须要配置环境先&#xff08;……&#xff09;&#xff0c;下面就来研究一下这个问题。首先当然得有iis&#xff0c;这个似乎不用多说&#xff0c;添加/删除程序-安装windows组件-iis-插入2000或xp光盘-完成&#xff08;当…

vs c语言 多线程demo,一个多线程的Socket通信Demo(C语言实现)

-----------这是客户端程序--------------#include "stdio.h"#include "winsock2.h"#include "stdlib.h"#pragma comment(lib,"ws2_32")void main(){WSADATA wsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKET s socket(PF_INE…

【转】Azure Logic App Demo

使用Azure Logic App Azure Function 完成简单的业务流程 什么是Logic App Azure 逻辑应用提供了&#xff0c;用于在云中简化并实现可缩放的集成和工作流的方式。 它提供了可视化设计器&#xff0c;用于为流程建模并将流程作为一系列步骤&#xff08;称为工作流&#xff09;…

住宅的结构有哪些形式

住宅的结构有哪些形式住宅的结构是指住宅的承重骨架(如房屋的梁柱、承重墙等)&#xff0c;其作用是保证住宅在使用期限内&#xff0c;把作用在住宅上的各种荷载或作用力&#xff0c;可靠地承担起来&#xff0c;同时在保证住宅的强度、刚度和耐久性的情况下&#xff0c;把所有的…

c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...

#include #include /* fabs */#ifdef _WIN32// #include #endif//输出的数值不断递增&#xff0c;即使将10改成10.0&#xff0c;循环也没有中止&#xff0c;为什么&#xff1f;void test_float001(){double i;for(i0; i ! 10; i 0.1){printf("%.1f\n", i);#ifdef _W…

【转】Azure应用部署方式对比

如图 azure环境应用托管方式对比 1. app service serverless azure的app service支持几乎所有语言开发的web app&#xff0c;既可以手动使用publish profile部署&#xff0c;也可以使用vsts创建一个&#xff08;CDCI&#xff09;持续集成。都非常方便。 而azure的function app…

.Net下几种日志管理方法

.Net下几种日志管理方法 日志是应用程序中不可缺少的一部份&#xff0c;不仅可以记录应用程序的运行状态&#xff0c;还可以记录一些BUG&#xff0c;便于应用程序的更新与修改。在.Net有好几种方法可以对日志进行管理。1、数据库日志。2、文本日志。3、系统事件日志。 首先&…