自定义Visual Studio IntelliTrace 智能跟踪

简介

我们知道Vistual Studio 2010提供了新的IntelliTrace智能追踪技术,他帮助我们不用单步调试就可快速的查看一段时间里发生的重要事件,关于智能跟踪可以参考《使用 IntelliTrace 调试应用程序》。但内置的事件往往还不够,我们希望扩展这些事件,本文就是介绍如何自定义扩展这些事件。

需求简介

在我们开发的一个Web项目中,客户端与服务端重要的一个交互就是传递“变更集”的Web请求,他是程序执行的关键事件。虽然智能追踪帮我们提供了Web请求的事件,但是他太多了,而且不能给我应用变更集事件关键的会话ID和xml数据,因此,我希望能够定制自己的“Apply ChangeSet”事件。

看起来定制后的效果应该是这样的:

IntellitraceEvent1

Visual Studio的Intellitrace面板能够看见我定制的“Apply ChangeSet”事件,除此之外,我还希望看见应用变更集时的相关数据:

IntellitraceEvent2

我的机器安装的是Vistual Studio 2011 beta,所以画面可能与Visual Studio 2010稍微不同。

定制追踪计划 collectionplan.xml

你需要知道的是,我们并不需要修改源代码,才能完成事件的记录,VS是通过一个collectionplan.xml描述追踪哪些方法,我们要改动这个文件来完成定制,他通常存在:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0\en

不同版本的Visual Studio其路径肯定不同,所以你需要自己搜索一下collectionplan.xml。我是直接修改这个文件,我没有找到不破坏这个文件另外建立文件的方法,如果你知道请回复我啊。

打开文件后,我们首先增加“分类”和“组件”两个数据,让我们先改动再看效果就很简单了。

image

在Categories建立自己的分类,id和_locID老实说我不清楚区别,我照葫芦画瓢而已。

image

在ModuleSpecifications中添加你希望追踪的dll,写文件名就可以了,不用关心版本,所在路径的问题。

image

然后在DiagnosticEventSpecifications中添加你希望追踪的事件,他实际上就是定义你追踪哪个方法,以及你希望记录哪些变量。

简单的我就不介绍了,我也是照葫芦画瓢,我说明一下稍微复杂点的。

CatrgoryId和ModuleSpecificationId

CatrgoryId是分类的id,ModuleSpecificationId是前面我们填写的dll时对应的Id,不要搞错了。从这里我们也看出来,一个分类可以包含多个dll的事件,也可以一个dll发送不同分类的事件,完全由你规划。

MethodId:

我猜想是方法的签名,反正我严格按照规矩填写就是了,多个参数使用英文的逗号隔开,如果你没有返回值,可以填写: System.Void。

ShortDescription和LongDescription

顾名思义,一个是短描述和长描述,短描述显示在标题,长描述需要点击后才能看见。所以短描述要精简并显示关键数据。他支持变量的,就像我上面的{0},和{1},他指向DataQueries集合的索引。

DataQuery

这里你可以定义你希望记录的变量,第一个index的意思是你从哪里取值,0就是this,1及其以后就是各个参数。

如果取值的对象是一个简单类型,例如我这里取的session就是一个字符串,那么query属性就是空,如果取值的源是对象,你可以使用query获取其中的字段值,例如在SqlCommand中,他的长描述中输出了命令关联的连接字符串,像这样:

image

显然他可以使用私有变量,并不断的层级访问。而且你不必小心处理_connection是null造成表达式失败。

至于如何获取返回值,(⊙o⊙)…我没有找到。

编程方式获取值

如果注意往下看其他的配置,好像还支持编程的方式获取值,例如:

image

这个Microsoft.VistualStudio.DefaultDataQueries.dll也是用.net编写的程序,反编译你就能看见实现的方法,实现IProgrammableDataQuery接口即可。功能上当然要强一些,比如可以获取返回值,自己格式化数据。

在Visual Studio中查看效果

万事俱备,保存文件后你需要重新启动Visual Studio,先点击工具-》选项-》智能追踪。你可以看见我们自定义的分类。

image

现在当你调试代码时,就可以在InterlliTrace中看见我们拦截的事件了。

调试愉快 微笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual Studio Enterprise是一款功能强大的集成开发环境,它提供了许多特殊功能和工具,以帮助开发人员更高效地编写和管理代码。其中一些特别的功能包括代码图、IntelliTrace和特有的测试工具。\[1\] 代码图是Visual Studio Enterprise特有的功能之一,它提供了代码可视化和建模工具,可以帮助项目负责人更直观地了解代码结构、类、项目之间的映射关系。这使得评估当前代码是否符合设计或存在潜在风险变得更加方便。\[3\] IntelliTrace是另一个Visual Studio Enterprise的特色功能,它是一种调试工具,可以记录应用程序的执行过程,包括代码路径、变量值和异常信息。这使得开发人员可以更轻松地追踪和调试应用程序中的问题。\[1\] 此外,Visual Studio Enterprise还提供了一套特有的测试工具,用于自动化测试、性能测试和负载测试等。这些工具可以帮助开发人员更全面地测试和验证他们的应用程序,以确保其质量和性能。\[1\] 关于Visual Studio Enterprise的系统要求,它支持64位操作系统,包括Windows 11版本21H2或更高版本、Windows 10版本1909或更高版本以及Windows Server 2012、2019和2016等版本。不支持32位和ARM操作系统,以及某些特定的Windows版本和虚拟化环境。\[2\] 总之,Visual Studio Enterprise是一款功能丰富的开发工具,提供了许多特殊的功能和工具,以帮助开发人员更高效地编写和管理代码,并提供了代码可视化、调试和测试等特色功能。 #### 引用[.reference_title] - *1* *3* [Visual Studio 高级调试-企业版三大特性](https://blog.csdn.net/qq_40404477/article/details/129151939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Visual Studio2022更新,Windows7和32位系统无缘体验](https://blog.csdn.net/daneas/article/details/121221359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值