Tool之System Viewer
如转发 请标明出处!
Wind River提供了一个叫做System Viewer的工具 (VxWorks5时叫做WindView),这就是一个嵌入式软件的逻辑分析器,能够将复杂的Target活动可视化,可用于故障定位
OS、App和HardWare之间的交互通常在限定的时间内发生,其分辨率为微秒或更高。而RTOS领域常用的调试工具,如源代码级调试器,只提供静态信息
有了System Viewer,就可以记录正在运行的Target上的活动,它可以高度配置要查看的数据类型和系统信息,然后这些数据还可以保存下来供后续分析
- 可视化多核系统行为,例如,识别CPU affinity问题
- 检测竞争条件、死锁、CPU饥饿以及其它与任务交互相关的问题
- 确定应用程序响应能力和性能
- 查看App的循环模式
- 保存数据以进行延迟分析
在WorkBench3.x + VxWorks6.x上一直没有操作成功,捕获的数据总是不完整
那就使用WorkBench4 + VxWorks7来试试吧
首先在VSB中包含System Viewer组件
随便写个任务通信的例子
#include <taskLib.h>
#include <semLib.h>
#include <sysLib.h>
static SEM_ID mySem;
int myCount = 0;
static void task1()
{
while(1)
{
semTake(mySem, WAIT_FOREVER);
myCount++;
}
}
static void task2()
{
while(1)
{
semGive(mySem);
taskDelay(sysClkRateGet());
}
}
void test()
{
mySem = semBCreate(SEM_Q_FIFO, SEM_EMPTY);
taskSpawn("tTask1",200,0,2000,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);
taskSpawn("tTask2",200,0,2000,(FUNCPTR)task2,0,0,0,0,0,0,0,0,0,0);
}
启动Target,连接Connection,执行例子程序
找到Analysis actions,点击Launch System Viewer
在弹出的System Viewer Configuration页面里,根据实际需求定制Event Logging Level,例如Enable All
根据实际需求定制Upload Mode/Buffer Size,建议将Buffer Size改大一些,并选中Use a circular buffer
点击Apply the current configuration to the target
启动System Viewer logging
等待一会儿,观察到buffer的记录
点击Stop,收集到的.wvr文件自动上传并打开了
在Event Graph窗口里,通过Filter或Hide功能,将不关心的Task去掉
在上部的Overview窗口里,通过鼠标拖动,选择有事件的区域,并通过Zoom按钮,调整可视区域
双击某个事件,就可以看到它的属性
或者在Event Table窗口里,可以看到所有事件的列表
事件的属性里,包含了相应Object的ID,可以在Filter中针对这个信息进行定制。例如,只Include某一个Object,这样就可以很清晰地看到任务之间的交互、状态变换等情况了
非常强大的一个工具,可惜我用的不多...
我是泰山 专注VX好多年!
一起学习 共同进步!
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十