1

我正在尝试编写一个采用.NET分析API的COM服务器。此COM服务器将在Windows Mobile 6设备上运行。此COM服务器的目的是分析运行在同一设备上的.NET应用程序。但是,我无法找到在Windows移动SDK下面的头文件:在Windows Mobile设备上运行代码分析器

  1. cor.h
  2. corprof.h

这是否意味着我需要移植这些头文件使用Windows(桌面)SDK中提供的相应版本?

这些头文件定义了ICorProfilerCallBack接口的家族,它们对于使用.NET Profiling API非常重要。

我看了一下这些Windows SDK中的头文件,我发现它们包含了很多与.NET框架对象模型相关的特定于平台的信息,以及PE文件的格式一个.NET程序集。似乎我需要深入了解这些.NET领域的实现细节才能成功移植。有没有其他的选择?

回答

1

您遇到的问题是,您从一开始就做出了不正确的假设,即Compact Framework支持任何ICorProfilerCallBack接口。它不是。如果你想进行性能分析,我曾经看到/使用过其他性能分析器过去的几条路径:

  1. 使用反射来重建和检测桌面上的CF程序集。使用您自己的专有发布模式,您可以推出功能输入/退出消息以及类似的东西。这对代码分析非常有用,但对于内存分析来说并不那么重要。
  2. 构建CF的Mono.Cecil,并使用它在目标设备上进行仪器/发射。这比较慢,但更便携。
  3. 在CF中使用完全未记录的内存分析API,如the CF CLR Profiler使用。我已经找到了关于这些文档的任何文档并且空着,并且我试图推动微软在Codeplex上开源工具,但是我也没有取得任何进展,所以这将会是很多逆向工程使用现有工具和Wireshark的网络数据包。
+0

+1表示可能的替代方案。 – ghd 2013-02-20 04:52:11

+0

如果你在[CodePlex](http://clrprofiler.codeplex.com/releases/view/97738)上的CLR Profiler中指向#3,我认为它不支持Compact Framework。 – ghd 2013-02-20 05:24:35

+0

关于第1点,是否涉及检查程序集(我想要分析的程序集),在适当的位置插入函数进入/退出消息,重新计算受影响模块的校验和并修改其相应元数据中的校验和字段表?看起来Mono.Cecil正在完成所有这些工作。我对吗? – ghd 2013-02-20 06:44:25

相关问题