IntelliTrace调试
当您进行调试时,IntelliTrace 将在后台收集有关托管应用程序的数据,其中包括来自许多框架组件(例如 ADO.NET、ASP.NET 和 System.XML)的信息。这些 IntelliTrace 事件使开发人员能够查看先前在执行过程中发生的情况,并且最重要的是,能够进行“回溯”以查看应用程序的先前状态,而不必重新启动调试器。当我进入调试器时,我立即看到了按顺序列出的以前收集的 IntelliTrace 事件, IntelliTrace窗口允许按类别或按线程对所收集事件的列表进行筛选。此外,我可以执行基于文本的搜索来查找可快速跳转到的重要事件。由于 IntelliTrace 还会收集异常,因此我可以搜索词条“异常”,列表将进行筛选以列出导致出现 ASP.NET 错误页的异常,既包括在其中引发的异常调出IntelliTrace窗口快捷键Ctrl+D,V
1、默认设置为 仅收集事件(如图1),在 工具--选项-IntelliTrace中可以修改设置
默认情况下,IntelliTrace 配置为仅收集 IntelliTrace 事件。此解决方案开销很低,但不会提供应用程序的完整执行历史记录。如果您需要更深层的信息,则可以配置 IntelliTrace 来收集更多数据。像其他调试器设置一样,IntelliTrace 也可通过“选项”对话框(可从“工具”菜单中访问)进行配置(请参见图 1)。
图1 默认设置
| 类别 | 描述和收集的数据 |
| ADO.NET | 与针对 SQL 执行查询、执行的命令以及连接字符串相关的事件。 |
| MVC | 与 ASP.NET 管道以及请求处理和重定向相关的事件。 |
| 控制台 | 控制台输出。 |
| 数据绑定 | Windows 窗体数据绑定。 |
| 环境变量 | 对进程中的环境变量进行求值和检索。 |
| 文件 | 创建、删除和访问文件。 |
| 手势/ 特定动作 | 用户对 Web 窗体、Windows 窗体和 WPF 中的常见控件执行的操作。除了收集有关与控件的交互的数据之外,单击其中一个事件还会自动将您重定向到相应的事件处理程序。 |
| 迟缓初始化 | 初始化延迟加载的变量。 |
| 注册表 | 创建、删除和查询注册表信息。 |
| 服务模型 | 从 WCF 中进行的 Web 服务调用。 |
| 线程处理 | 用户工作项和并行计算任务的排队。 |
| 跟踪 | 调试器跟踪输出和断言。 |
| 用户提示 | 显示 Windows 窗体和 WPF 消息框以及对话框的结果。 |
| 工作流 | 实例化和完成活动。 |
| XML | XML 文件加载。 |
图 2 重点列出了一些 IntelliTrace 所收集事件的类别。
使用例子,在datagirdview中加载数据:
private void Form1_Load(object sender, EventArgs e) { dgvList.Rows.Clear(); List<Model.m_Car> lst = new BLL.m_Car().GetModelList("i_Flag=0"); foreach (Model.m_Car item in lst) { int i = dgvList.Rows.Add(item.vc_name, item.vc_remark); dgvList.Rows[i].Tag = item; } dgvList.ClearSelection(); //此处加断点 }
点击要查看的事件,会看到详细信息(图3),并在局部变量(图4)和调用堆栈(图5)中显示信息
图3 智能跟踪窗口(查看数据库访问事件)
图4 局部变量(显示sql语句,数据库连接信息)
图5 调用堆栈(点击相应的调用命令,会定位到源代码中,但是此处没收集调用信息,所以strWhere是未知的)
2、收集事件及调用信息
通过选择“IntelliTrace 事件和调用信息”,可将 IntelliTrace 配置为不仅收集 IntelliTrace 事件,而且在每个方法进入、退出和调用站点时收集调用信息,例如位于这些位置的参数和返回值。
由于存在性能问题,因此默认情况下只会为集合启用定义的 IntelliTrace 事件的一个子集。您可能需要考虑启用的某些事件包括控制台输出、文件访问、迟缓初始化、注册表访问以及线程处理事件。您可以从“选项”对话框的“IntelliTrace 事件”窗格中启用或禁用整个事件类别或个别事件。
图6 收集事件及调用信息,可以回放调用历史
2.1 事件视图,调用视图
还是刚才的例子,启动调试,智能跟踪窗口如图7,和图3不同的是,智能跟踪窗口顶端有《切换到调用视图的按钮》
图7 智能跟踪窗口
点击切换后如图8,显示调用历史信息,通过浏览“调用”视图这种机制,可以快速了解执行历史记录的概况,并在代码库中进行大幅跳转。
图8 调用历史信息
2.2 单步回放历史执行记录控件
在源代码窗口的装订线中会出现这样的控件,能够单步执行应用程序,并且在局部变量窗口看到每一步值的变化
图9
图10
图11 也可以通过点击《在此设置调试上下午》,出现图9的控件,执行单步调试
2.3 在 IntelliTrace 中搜索此行, 搜索功能使我能够恰好跳转到特定的函数调用
在编辑器中,我可以右键单击要搜寻的行,并从上下文菜单中选择“在 IntelliTrace 中搜索此行”(请参见图 12)。搜索将开始,并且结果将呈现在编辑器窗口顶部的搜索栏中,请参见图 13)。
图12 搜索功能使我能够恰好跳转到特定的函数调用
图13
参见
http://msdn.microsoft.com/zh-cn/magazine/ee336126.aspx
http://msdn.microsoft.com/zh-cn/library/dd572114.aspx
http://msdn.microsoft.com/zh-cn/library/dd264963.aspx#Open
IntelliTrace调试的更多相关文章
- IntelliTrace 调试、定位异常
最近看了一个开源数据库管理,然后没有认真看它的配置环境,想看看是什么东西, 然后发现有类型转换的错误,但是一下子也定位不到哪里出错? 所以对于这种一下子找不到异常在哪里的,可以使用intellitra ...
- 使用 IntelliTrace 调试应用程序
IntelliTrace 如何能够大幅改善您的日常开发活动,并提升您快速轻松诊断问题的能力,而不必重新启动应用程序和使用传统的“中断-单步执行-检查”技术进行调试.介绍了组织如何能够通过在测试过程中收 ...
- 掌握VS2010调试 -- 入门指南
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺 ...
- VS2010调试入门指南
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺 ...
- VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的) 的时间远多于写代码的时间.通常,debug是指发现 ...
- [转载]基于TFS实践敏捷-Scrum模式运用
根据Forrester Research今年第二季度的一份研究报告,在超过1000名专业开发人员中,采用敏捷模式进行软件开发的已经有10.9%采用了Scrum模式,在所有的敏捷开发模式中名列首位,而在 ...
- 一些有用的Azure工具
目前,Azure 没有为客户提供监控和管理托管服务的完整解决方案.为了获取网络信息,speedtest.net 提供了一种工具,用于测量响应时间.带宽和整体连接质量.可以使用 Matthew Roso ...
- [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发
http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...
- Visual Studio 调试系列4 单步后退来检查旧应用状态(使用使用 IntelliTrace 窗口)
系列目录 [已更新最新开发文章,点击查看详细] IntelliTrace 后退会在每个断点处及调试器步骤事件发生时自动拍摄应用程序的快照. 凭借记录的快照便可以返回到上一个断点或步骤,并查看当 ...
随机推荐
- 配置OpenLDAP,Java操作LDAP,DBC-LDAP进访问
LDAP快速入门 1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的 ...
- SQL语句多个字段排序
写在前面的话: 本次迭代,分配的任务有点多啊,好在本妈妈朝10晚6的加班加点.其中一项就是列表展示啊, 展示就展示呗,还要排序.排序也可以,测试时排序字段值为啥都一样啊.结果点一下一个顺序. 就想在第 ...
- zay大爷的膜你题 D2T2——不老梦(AK梦)
还是万年不变的外链 这个题.....是最难的....但是不知道为啥扶苏神仙讲完了之后我竟然听懂了.... 所以这个题我要好好写一写 首先我们看一看每一个测试点,来一点点得分 第一个测试点n = 1,直 ...
- RotateZoom.cpp——Inter
// RotateZoom.cpp : Defines the entry point for the console application. // #include "stdafx.h& ...
- docker英语
demotevt. 使降级:使降职 promotevt. 促进:提升:推销:发扬 swarmn. 一大群:蜂群:人群:一大群小型天体同时在空中出现 worker 工人manager 经理swarm 人 ...
- Python基本语法_基本数据类型_序列类型详解
目录 目录 序列 序列的标准操作符 切片操作符 一个例子 字符串的连接 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 m ...
- 阶段3 1.Mybatis_08.动态SQL_01.mybatis中的动态sql语句-if标签
创建新的工程 复制到新建的项目里面 pom.xml依赖部分复制过来 dao中整理代码 只保留四个查询 映射文件也只保留四个查询方法 增加一个根据条件查询的方法. 由于用了别名,所以parpameter ...
- WPF 带有提示文本的透明文本框
<TextBox Text="{Binding SearchInfo, UpdateSourceTrigger=PropertyChanged}" Grid.Row=&quo ...
- 基于原生XMLHttpRequest封装
用了一段时间的Ajax,感觉有很多的不足之处,于是就封装原生了 XMLHttpRequest . 废话不多说,直接上代码. var http = function () { 'use strict'; ...
- linux服务器上安装mysql
mysql版本:mysql-5.6.44-linux-glibc2.12-x86_64.tar linux操作系统和版本信息: 1.检查linux服务器上是否已安全mysql [root@localh ...