首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IntelliTrace添加自定义ProgrammableDataQuery诊断事件

使用IntelliTrace添加自定义ProgrammableDataQuery诊断事件
EN

Stack Overflow用户
提问于 2016-01-08 22:15:59
回答 1查看 598关注 0票数 0

我为IntelliTrace创建了几个自定义IntelliTrace。这如预期的那样起作用。

代码语言:javascript
复制
 <DiagnosticEventSpecification enabled="true">
    <Bindings>
      <Binding onReturn="false">
        <ModuleSpecificationId>DiagnosticsTester</ModuleSpecificationId>
        <TypeName>DiagnosticsTester.IntellitraceTest</TypeName>
        <MethodName>TestTrace2</MethodName>
        <MethodId>DiagnosticsTester.IntellitraceTest.TestTrace2(System.String):System.Void</MethodId>
        <ShortDescription _locID="IntelliTraceEnterEvent_ShortDescription">The method TestTrace2.1 was called</ShortDescription>
        <LongDescription _locID="IntelliTraceEvent_LongDescription">View the Locals window for details about the collected data</LongDescription>
        <AutomaticDataQuery level="All" />
      </Binding>
      <Binding onReturn="true">
        <ModuleSpecificationId>DiagnosticsTester</ModuleSpecificationId>
        <TypeName>DiagnosticsTester.IntellitraceTest</TypeName>
        <MethodName>TestTrace2</MethodName>
        <MethodId>DiagnosticsTester.IntellitraceTest.TestTrace2(System.String):System.Void</MethodId>
        <ShortDescription _locID="IntelliTraceExitEvent_ShortDescription">The method TestTrace2.1 returned</ShortDescription>
        <LongDescription _locID="IntelliTraceEvent_LongDescription">View the Locals window for details about the collected data</LongDescription>
        <AutomaticDataQuery level="All" />
      </Binding>
    </Bindings>
    <CategoryId>IntelliTrace.generated.8889ce9d-2320-40c0-a6bf-dfac215354d2</CategoryId>
    <SettingsName _locID="">DiagnosticsTester.IntellitraceTest.TestTrace2</SettingsName>
    <SettingsDescription _locID=""></SettingsDescription>
  </DiagnosticEventSpecification>

当我尝试使用ProgrammableDataQuery时,它无法捕获事件。根据ProssesMon和“融合日志查看器”,Intellitrace从不尝试加载我的自定义dll。定义如下:

代码语言:javascript
复制
   <DiagnosticEventSpecification enabled="true">
    <Bindings>
      <Binding>
        <ModuleSpecificationId>DiagnosticsTester</ModuleSpecificationId>
        <TypeName>DiagnosticsTester.IntellitraceTest</TypeName>
        <MethodName>TestTrace2</MethodName>
        <MethodId>DiagnosticsTester.IntellitraceTest.TestTrace2(System.String):System.Void</MethodId>
        <ProgrammableDataQuery>
          <ModuleName>UnikDataQuery.dll</ModuleName>
          <TypeName>UnikDataQuery.TestDataQuery</TypeName>
        </ProgrammableDataQuery>
      </Binding>
    </Bindings>
    <CategoryId>IntelliTrace.generated.8889ce9d-2320-40c0-a6bf-dfac215354d2</CategoryId>
    <SettingsName _locID="">DiagnosticsTester.IntellitraceTest.TestTrace2</SettingsName>
    <SettingsDescription _locID=""></SettingsDescription>
  </DiagnosticEventSpecification>

我已经将dll放在IntelliTrace独立收集器和IntelliTrace C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\14.0.0的VS2015文件夹中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 07:22:16

带有PDQ的dll应该放在一个带有IntelliTace.exe程序的文件夹中。换句话说,如果您使用集成到Visual中的IntelliTrace,那么应该将UnitQuery.dll复制到您提到的文件夹中,即:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\14.0.0

顺便说一句,在这个文件夹中,您还可以找到VS使用的具有默认PDQ的Microsoft.VisualStudio.DefaultDataQueries。

但是,如果使用独立集合,则必须将dll复制到其安装目录。

我做了很多次,效果很好。如果您的dll是用平台目标设置为任何CPU编译的,这也是值得验证的。它将允许避免兼容性问题。

我最后的评论是,使用PDQ的dll不仅需要捕获日志,还需要:

  • 把它打开。
  • 用IntelliTrace API对其进行分析。

例如,如果您:

  • 使用独立集合来捕获日志
  • 要在中打开此日志

然后必须将UnitQuery.dll复制到两个位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34687029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档