zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Tool之ProfileScope

2023-03-14 22:44:38 时间

欢迎关注VxWorks567

如转发 请标明出处!

ScopeTools里还有个成员叫做ProfileScope,从Vx67开始,改名为Performance Profiler

使用这个工具能看到

  • CPU在哪里做了什么
  • 正在调用哪些函数
  • 每个函数又依次调用了哪些函数
  • 整个调用栈中,每一级占用CPU的百分比 它提供了三个视图
  • System view,使用树形结构展示完整的调用栈
  • Function view,每个线程的函数调用列表
  • Process view,进程视图

还是跑个例子,就知道它怎么用了,例如这个代码,加到VxWorks 6里

/*
 * 公众号  VxWorks567
 */
#include <stdlib.h>
#include <taskLib.h>

int profileDelay = 1;
static int result;

static int duplicate(int number)
{
    int counter,useless=0;
    for(counter=0; counter<=(number * 40000); counter++)
        {
        useless++;
        }
    return (2 * number);
    }

static int halve(int number) 
{
    int counter,useless=0;
    for(counter=0; counter<=(number * 10000); counter++)
        {
        useless++;
        }
    return (number/2);
    }

static int calculation(int number)
{
    int toBeReturned;
    if(number%2)
        toBeReturned = duplicate(number);
    else 
        toBeReturned = halve(number);
    return(toBeReturned);
    }

void testProfile() 
{
    for(;;) 
        {
        result = calculation(rand());
        taskDelay(profileDelay);
        }
    return;
    }

代码很简单,为了避免被编译器优化掉,建议在工程属性中将优化选项关闭

然后启动VxWorks 6,在WorkBench里连接Target Connection,并右击选择Attach Performance Profiler

在WorkBench中央位置就会打开它的窗口。这时启动应用程序,几秒钟之后,就可以看到程序里CPU的使用情况了

可以看到例子testProfile()中duplicate()占用的CPU明显多于halve(),右击选择View Source还可以跳转到相应的源码语句

非常强大的工具,VxWorks卖的贵,是有原因滴

我是泰山 专注VX好多年!

一起学习 共同进步!