除了Visual Studio中的工具之外,您还知道哪些工具可以分析Windows CE/Mobile应用程序中的性能瓶颈?我正在寻找类似于CE/Mobile的AQTime,用来分析编译成本机代码的C/C++应用程序。
发布于 2008-11-02 04:24:20
我还没有找到任何这样的用于WindowsMobile本机开发的工具。
我找到的最接近的工具是EnTrek工具集(CodeSnitch / ProcMan),但它们并不是真正的分析工具。http://www.entrek.com/products.htm
我们所做的是使用VC++的Vistual Studio "/callcap“开关将自己的分析支持构建到我们自己的产品中。使用该开关,您可以构建一个性能分析库,它可以根据您的喜好输出计时和计数。它对我们来说大部分工作都很好,但有时这些钩子函数的开销可能太大,它可能会将计时结果扭曲到大量函数调用的区域。
从MSDN文档:
/callcap选项使编译器在每个函数的开头和结尾处插入对分析钩子的调用。
必须在不使用callcap开关的情况下编译分析挂钩。如果使用callcap开关编译分析钩子函数,这些函数将对自身执行无限的递归调用。
下面的代码示例Callcaphooks.c显示了一个分析挂钩函数_CAP_Enter_Function,用于在不使用CallCap.c的情况下进行编译。
// File: callcaphooks.c
#include <stdio.h>
int main();
void _CAP_Enter_Function(void *p)
{
if (p != main)
printf("Enter function (at address %p) at %d\n",
p, GetTickCount());
return;
}
void _CAP_Exit_Function(void *p)
{
if (p != main)
printf("Leaving function (at address %p) at %d\n",
p, GetTickCount());
return;
}发布于 2008-12-01 21:42:08
Windows CE现成支持Remote Call Profiler (如果原始设备制造商添加了对它的支持)。我相信,WinMo镜像通常已经在镜像中得到了支持。对于CE,您需要设置IMAGEPROFILER环境变量(使用项目属性)。
在MSDN中不清楚的是,如何检测不是使用Platform Builder构建的应用程序,但它实际上非常简单。您必须将/callcap swith添加到编译器命令行,并将cecap.lib添加到链接器设置。
当然,您需要一个工具来捕获和显示分析器数据。为此,您可以使用Platform Builder的评估版本(5.0或6.0) (评估是免费的)或eVC 4.0 (也是免费的)。
有关分析器使用的更多信息,CE核心团队的Sue Loh已经在博客上发表了一些关于它的信息。
发布于 2010-01-27 05:43:13
我已经为Windows Mobile编写了一个调用图分析器。它目前(截至2010年1月)处于Beta阶段,可以免费下载。
http://www.codeprophet.co.cc
HTH
-Zak
https://stackoverflow.com/questions/256291
复制相似问题