除了Visual Studio中的工具,你还知道哪些可以分析Windows CE/Mobile应用程序性能瓶颈的工具吗?我正在寻找类似于AQTime适用于CE/Mobile的工具,以便对编译为本机代码的C/C++应用程序进行分析。
除了Visual Studio中的工具,你还知道哪些可以分析Windows CE/Mobile应用程序性能瓶颈的工具吗?我正在寻找类似于AQTime适用于CE/Mobile的工具,以便对编译为本机代码的C/C++应用程序进行分析。
MSDN上不清楚如何令一个不是由Platform Builder构建的应用程序受监控,但实际上很简单。您需要在编译器命令行中添加/callcap开关,并在链接器设置中添加cecap.lib。
当然,您需要一款工具来捕获和显示分析数据。您可以使用Platform Builder的评估版本(5.0或6.0)(评估版是免费的),也可以使用eVC 4.0(同样免费)。
有关分析使用的更多信息,CE核心团队的Sue Loh在博客中谈到了一些内容。
我没有找到任何适用于WindowsMobile本地开发的工具。
最接近的工具是EnTrek工具集(CodeSnitch / ProcMan),但它们并不是真正的性能分析工具。 http://www.entrek.com/products.htm
我们做的是使用Vistual Studio的“/callcap”开关为VC ++构建自己的产品支持性能分析。使用该开关,您可以构建一个性能分析库,该库会输出时间和计数等信息。对我们来说,它基本上运行良好,但有时这些钩子函数的开销可能太大,会将定时结果偏向于大量函数调用的区域。
来自MSDN文档:
/callcap选项会导致编译器在每个函数的开头和结尾插入对性能分析钩子的调用。
必须使用未带callcap开关的编译性能分析钩子。如果使用callcap开关编译性能分析钩子函数,则函数将对其自身执行无限递归调用。
下面的代码示例Callcaphooks.c显示了一个用于编译不带callcap的性能分析钩子函数_CAP_Enter_Function。
// 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;
}