除了Visual Studio中的工具之外,您还知道哪些工具可以分析Windows CE/Mobile应用程序中的性能瓶颈?我正在寻找类似于CE/Mobile的AQTime之类的东西来分析编译为本机代码的C/C++应用程序.
Windows CE支持Remote Call Profiler(如果OEM添加了对它的支持),开箱即用.我相信,WinMo图像通常已经在图像中得到了支持.对于CE,您需要IMAGEPROFILER环境变量集(使用项目属性).
在MSDN中不清楚的是如何检测不是使用Platform Builder构建的应用程序,但它实际上非常简单.您必须将/ callcap swith添加到编译器命令行,并将cecap.lib添加到链接器设置中.
当然,您需要一个工具来捕获和显示探查器数据.为此,您可以使用Platform Builder(5.0或6.0)的评估版(eval是免费的)或eVC 4.0(也是免费的).
有关探查器用法的更多信息,来自CE核心团队的Sue Loh在博客上发表了一些博文.
我还没有找到任何用于WindowsMobile的本地开发工具.
我发现的最接近的是EnTrek工具集(CodeSnitch/ProcMan),但它们并不是真正的分析工具. http://www.entrek.com/products.htm
我们所做的是使用VC++的Vistual Studio"/ callcap"开关为我们自己的产品构建自己的分析支持.使用该开关,您可以构建一个分析库,无论您喜欢什么,都可以转储计时和计数.它对我们来说效果很好,但有时这些钩子函数的开销可能太大,并且它可能会将时序结果偏向大量函数调用的区域.
来自MSDN文档:
/ callcap选项使编译器在每个函数的开头和结尾插入对分析钩子的调用.
您必须在没有callcap开关的情况下编译分析钩子.如果使用callcap开关编译分析钩子函数,函数将对自己执行无限递归调用.
下面的代码示例Callcaphooks.c显示了一个分析钩子函数_CAP_Enter_Function,用于没有callcap的编译.
// File: callcaphooks.c #includeint 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; }