用于Windows CE / Mobile的代码分析/性能分析工具

时间:2008-11-02 00:06:07

标签: windows-mobile windows-ce native profiling

除了Visual Studio中的工具外,您了解哪些工具来分析Windows CE / Mobile应用程序中的性能瓶颈?我正在寻找类似AQTime for CE / Mobile的东西,来分析编译为本机代码的C / C ++应用程序。

4 个答案:

答案 0 :(得分:9)

Windows CE支持Remote Call Profiler(如果OEM添加了对它的支持)开箱即用。我相信,WinMo图像通常已经在图像中得到了支持。对于CE,您需要IMAGEPROFILER环境变量集(使用项目属性)。

MSDN中不清楚的是如何检测不是使用Platform Builder构建的应用程序,但它实际上非常简单。您必须将/ callcap swith添加到编译器命令行,并将cecap.lib添加到链接器设置。

当然,您需要一个工具来捕获和显示探查器数据。为此,您可以使用Platform Builder的评估版(5.06.0)(eval是免费的)或eVC 4.0(也是免费的)。

有关探查器使用情况的更多信息,来自CE核心团队的Sue Loh在博客上发表了一些博文。

答案 1 :(得分:5)

我还没有找到任何用于WindowsMo​​bile的本地开发工具。

我发现最接近的是EnTrek工具集(CodeSnitch / ProcMan),但它们并不是真正的分析工具。 http://www.entrek.com/products.htm

我们所做的是使用VC ++的Vistual Studio“/ callcap”开关为我们自己的产品构建自己的分析支持。使用该开关,您可以构建一个分析库,无论您喜欢什么,都可以转储计时和计数。它对我们来说效果很好,但有时这些钩子函数的开销可能太大,它可能会将时序结果偏向大量函数调用的区域。

来自MSDN文档:

  

/ callcap选项导致   编译器插入对分析的调用   钩子在每个的开头和结尾   功能。

     

您必须编译分析钩子   没有callcap开关。如果你   编译分析钩子函数   使用callcap开关,功能   将执行无限递归调用   对自己。

     

以下代码示例,   Callcaphooks.c显示了一个分析钩子   function,_CAP_Enter_Function,for   没有callcap的编译。

// 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;
}

答案 2 :(得分:3)

我为Windows Mobile编写了一个Call Graph探测器。它目前(截至2010年1月)处于测试阶段,可以免费下载。

http://www.codeprophet.co.cc

HTH

-Zak

答案 3 :(得分:0)

如果您正在进行.NET CF开发,请查看Power Toys for .NET CF 3.5以获取可帮助您查明瓶颈的实用程序,尤其是与内存相关的瓶颈。