tornado调试工具介绍

合集下载

restormer解析

restormer解析

restormer解析
【实用版】
目录
1.介绍 Restormer 的背景和定义
2.详述 Restormer 的工作原理
3.分析 Restormer 的优势和应用场景
4.总结 Restormer 的重要性和未来发展
正文
Restormer 是一种新型的软件测试技术,主要用于自动化软件测试。

随着软件的日益复杂化,手动测试已经无法满足软件质量保证的需求,因此 Restormer 应运而生。

Restormer 的工作原理是通过编写测试脚本来模拟用户操作,然后运行测试脚本,观察软件的反应,以此来检测软件的正确性和稳定性。

Restormer 的测试脚本是基于 Python 语言编写的,通过使用 Python 的特性,可以轻松地编写出复杂的测试逻辑。

Restormer 的优势在于它可以自动化执行测试任务,大大提高了测试效率。

同时,Restormer 的测试脚本可以复用,减少了测试的成本。

Restormer 的另一个优势是它的跨平台性,可以在不同的操作系统和软件环境中运行。

Restormer 的应用场景主要是在软件开发过程中,用来检测软件的正确性和稳定性。

Restormer 的测试脚本可以模拟各种用户操作,包括点击、输入和拖拽等,可以检测出各种软件错误。

总的来说,Restormer 是一种重要的软件测试技术,它的应用大大提高了软件测试的效率和准确性。

第1页共1页。

Python Tornado框架介绍及使用方法

Python Tornado框架介绍及使用方法

Python Tornado框架介绍及使用方法Python Tornado框架是一个轻量级、高效的Web框架。

它是由FriendFeed开发的,具有强大的网络协议处理能力和异步I/O特性。

目前已经成为Python Web开发的主流之一,被广泛应用于在线服务、推荐系统、实时通信等领域。

1. Tornado框架的主要特点1.1高效的异步I/OTornado是使用异步I/O机制支持高并发的Web框架。

它使用异步非阻塞I/O事件循环来避免线程死锁,提高CPU利用率,支持大规模的并发请求。

1.2网络通信协议支持Tornado框架内置了HTTP客户端和服务端,WebSocket服务端,以及基于TCP/UDP的协议支持,如流式传输协议、memcached协议等,可以快速搭建服务。

1.3轻量级框架Tornado框架具有轻量级的特点,核心代码不到2000行。

这可以使开发者更加专注于业务实现,减少无关代码的依赖。

1.4可扩展性Tornado框架具有良好的可扩展性。

它可以通过插件化的方式实现常用功能,如ORM框架、日志系统、邮件发送、安全系统、API管理等。

通过Python的生态圈,Tornado框架可以与其他流行的Python库和框架无缝集成,如Django、Flask等。

2. Tornado框架的核心应用2.1 Web应用Tornado框架最基本的应用便是搭建Web应用程序。

通过Tornado,开发者可以轻松地建立RESTful APIs、HTTP服务器、实时通信服务器等应用。

2.2异步编程由于Tornado框架天生支持异步I/O模型,因此它具有很好的异步编程特性。

开发者可以使用异步回调、线程池等方式优化程序性能,实现高并发、高效率的网络应用程序,甚至在CPU有限的情况下,也可以通过异步编程达到协程的效果。

2.3 WebSocket应用Tornado框架内置了WebSocket服务端,可以很方便地实现实时通信应用,如在线聊天、直播等。

嵌入式第五章1

嵌入式第五章1

5.1 Tornado简介Tornado是由美国风河系统公司(Wind River System 公司,WRS)推出的高性能实时操作系统VxWorks的开发平台,它包括一套完整的面向嵌入式系统的开发和调试工具。

Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境。

Tornado开发系统包含三个高度集成的部分:1.运行在目标机上的高性能、可裁剪的实时操作系统VxWorks;2.运行在宿主机的强有力的交叉开发工具和实用程序,可对目标机上的应用程序进行跟踪和调试;3.连接宿主机和目标机的多种通讯方式,如:以太网,串口线,ICE或ROM仿真器等。

Tornado环境采用主机--目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器与目标机上的目标代理程序的通信完成对应用程序的调测、分析。

Tornado交叉开发环境Tornado的功能特点集成性集成了编辑、编译、调试、仿真测试、项目管理等方面的一系列工具开放性作为一开放环境,Tornado与目标机的连接通过统一接口进行,接口提供丰富的API,用户可方便的定制和扩展各开发工具Tornado集成开发环境:Tornado IDE(集成开发环境)使用户创建和管理工程,建立和管理宿主机与目标机之间的通信以及运行、调试和监控VxWorks应用变得非常方便。

Tornado集成开发环境的核心工具:(1)编辑器(Editor) - Tornado的源代码编辑器1提供基本的代码文字编辑功能2支持C和C++语法格式的高亮显示3与Tornado的编译器进行了集成Project Facility可根据编译器给出的错误或警告信息直接定位到Editor窗口相应源代码处4与Tornado的调试器也进行了集成Editor窗口能跟踪代码的执行,实现源代码级的调试(2)工程配置工具(Project Facility) --图形化的核心配置工具(WindConfig)实现了工程管理的自动化;实现了对VxWorks配置自动化,主要是可以进行自动的依赖性分析、代码容量计算和自动剪裁等。

使用调试工具进行数据库调试(四)

使用调试工具进行数据库调试(四)

使用调试工具进行数据库调试在今天信息化高度发展的时代,数据库成为了许多应用程序的核心。

然而,由于各种原因,数据库在运行过程中经常出现各种问题,例如性能下降、数据丢失等。

为了解决这些问题,我们可以利用调试工具进行数据库调试。

本文将介绍一些常用的数据库调试工具及其使用方法。

1. 数据库调试工具简介数据库调试工具是指用于帮助开发人员诊断和解决数据库相关问题的软件工具。

这些工具提供了丰富的功能,可以帮助开发人员分析数据库的性能、排查错误、优化查询语句等。

常见的数据库调试工具有Navicat、Toad、SQL Server Management Studio等。

2. 数据库性能分析工具数据库性能是应用程序稳定运行的关键因素之一。

在进行数据库调试时,我们经常需要分析数据库的性能瓶颈,找出影响应用程序运行效率的问题。

Navicat与Toad等工具提供了性能监控和分析功能,可以帮助我们实时查看数据库的负载情况、查询语句的执行时间等指标,从而定位性能问题并优化。

3. 数据库错误排查工具数据库错误是开发过程中常见的问题之一。

当应用程序发生数据库错误时,我们需要快速定位错误的原因并解决问题。

SQL Server Management Studio等工具提供了详细的错误日志和调试信息,可以帮助我们快速排查错误。

此外,这些工具还提供了错误追踪和断点调试功能,使得进行复杂错误排查变得更加方便。

4. 数据库查询优化工具数据库查询是应用程序中最常用的操作之一,因此查询的效率对于应用程序的性能也有重要影响。

有些调试工具如Toad提供了查询优化功能,可以分析查询语句的执行计划,找出低效查询和没有使用索引的情况。

通过优化查询语句,我们可以提高应用程序的响应速度,提升用户体验。

5. 数据库调试工具的使用方法使用数据库调试工具进行调试时,我们需要注意以下几点:- 在使用调试工具之前,先准备好测试数据和测试环境,以避免对生产环境造成影响。

TornadoShell命令使用

TornadoShell命令使用

TornadoShell命令使⽤Tornado Shell 使⽤指南:Tornado Shell,即WindSh,可以⽤来下载应⽤模块、激活VxWorks操作系统和应⽤程序模块的⼦程序。

这些功能有许多的⽤途:查看VxWorks操作系统,交互开发、测试等。

WindSh能够解释绝⼤多数的C⾔语表达式;能执⾏C语⾔的绝⼤多数操作。

你可以通过TCL解释器与WindSh交互,TCL提供了⼀个完整的控制结构,对⽬标功能提供了更低级的访问,关于TCL语⾔,可以参见附件2的描述。

WindSh在开发主机上运⾏,但它能够创建任务,能够读写⽬标机上的设备,提供对⽬标机的完全控制。

因为WindSh在开发主机上运⾏,所以对⽬标机资源的占⽤⽐较少。

与其它的⼯具⼀样,只需在⽬标机上运⾏target Agent。

WindSh 操作牵系到Tornado开发环境的三个部件。

WindSh是你直接操作的部件,它接收你的命令并在本地执⾏,发送请求到target server以操作符号表和驻留在⽬标机上的程序。

Target server 管理符号表并处理所有与远程⽬标机的通讯,调⽤发送功能发送回所需的结果。

(尽管符号表包含了对⽬标机访问的地址,但它全部存储在主机上。

)Target agent 是唯⼀⼀个运⾏在⽬标机上的部件;它是⼀个极⼩的监视程序,提供对⽬标机内存的访问以及其它功能。

WindSh具有双重功能:作为⼀个命令解释器通过调⽤VxWorks的⼦程序提供对VxWorks功能的访问。

作为⼀个应⽤程序的调试⼯具使你能调⽤任何的应⽤程序。

WindSh提供硬件异常的通知。

见下⾯的系统修改和调试。

WishSh的功能:(1)设定任务级的断点。

(2)任务级的单步调试。

(3)符号的反汇编。

(4)任务和系统的信息。

(5)调⽤⽤户程序(6)创建和检查符号变量。

(7)检查和修改内存。

(8)异常的捕获。

使⽤WishSh:WishSh从输⼊流中读⼊⼀⾏输⼊,解释并执⾏该⾏的命令,把计算结果写⼊输出流中。

VxWorks调试手段和方法总结

VxWorks调试手段和方法总结
终止调试 可以通过以下两种方式终止调试(Stop Debugging): l 在以上 CrossWind 工具栏中,单击 图标 l 在 Debug 下拉菜单中单击 Stop Debugging 选项 终止调试将关闭调试器,相应的调试工具选项将变成灰色,如需进行调试,需重新启 动调试器。 中断 Debugger 单击 CrossWind 工具栏中的 图标或选择 Debug 下拉菜单中的 Interrupt Debugger 选 项可以中断程序的执行。若当前调试的任务正处于全速运行的状态,可以中断其执行。
: 中断程序的执行。若当前调试的任务正处于全速运行的状态,可以中断其执行。
:使程序继续执行(Continue),F5 :单步(Step Into),F11 :单步(Step Over),F10
4
:跳出当前函数(Step Out),SHIFT+F11 Continue 程序中止以后,可以使用Debug菜单的Continue命令恢复程序执行。如果没有遇到断点、 中断或信号,任务一直运行到结束。 Step Into 单击Step Into,可以单步执行程序。如果打开了调试器的观察窗口(检查数据、内存和 堆栈),窗口中的值会随着程序的单步执行自动更新。如果遇到一个子程序调用,Step Into 会单步运行到子程序的第一行,即可以进入调用的子程序。但是当调用了系统子程序和编译 时不带调试信息的应用子程序时,Step Into不会进入该子程序。 当Editor窗口的当前视图显示出汇编代码(从View下拉菜单中选择Disassembly或Mixed, 或是当前代码没有调试符号),Step Into将会使程序执行到下一条指令,而非下一条源代码。 Step Over 如果需要单步执行程序而不进入其子程序,单击Step Over。Step Over命令与Step Into命 令类似,只是在遇到子函数调用时,Step Over会一次将子函数执行完,并停在子函数调用的 下一条语句。 Step Out 当单步运行一个程序时,可能会发现问题出现在当前子函数的上一级调用函数处。这时 可以使用Step Ou命令继续执行程序直到当前子函数结束。程序停在子函数调用的下一条语 句,Debugger重新获得控制权。 Run to Cursor 为了使程序执行到一个特定的位置,却不想在此设置断点,可以将光标放在所需的代码 行,单击鼠标右键,在弹出的菜单中选择Run to Cursor。

Tornado使用(debug篇)

Tornado使用(debug篇)

Tornado使用(debug)debug涉及到的按钮有:其中:启动仿真器shell启动debugbrowserstop debugrun断点continue、step into、step over、step out观察工具另外常用的还有debug菜单下面的attach等。

下面以单独的OS部分调试过程为例说明这些工具的使用方法。

仿真和下载成功后:刚开始所有的调试按钮都是灰色,点击按钮启动debug,成功后这些按钮将变为亮色,这时就可以开始调试程序了。

此时可以打开shell窗口,程序中打印的信息会出现在这里(也有一部分会打到仿真窗口中,注意观察)。

点击按钮,输入需要调试的函数(对于VxWorks应该说是个任务)以及传递的参数(如果封装以后就简单了,不需自己传递参数),并且可以选中“break at entry point”在函数的入口处设置断点,让函数的执行可以按照自己的设计单步进行。

OK之后会调试窗口出现,可以看到任务停在了函数的入口处:此时,root任务断在了OS_MemSet处,这时,如果我们需要查看该函数的具体执行过程,则可以点击step into,任务的执行就会跳进OS_MemSet函数里边,在OS_MemSet函数内部,如果需要立刻返回root函数,可以点击step out。

而step over是按照程序的正常流程,对程序语句逐条执行。

另外,如果我们需要知道OS_MemSet函数的执行结果是否正确,即m_astPidCB数组是否被全部清0,可以在该变量上边点右键,选择“add to watch”,就会出现watch窗口,这边可以看到刚才选中的变量的内容,最近被改变的内容以红色显示:断点(break point):在debug菜单下面可以看到三种断点-breakpoint、global breakpoint、temp. breakpoint。

好像breakpoint只能在一个任务内可见,而如果你进行多任务调试,从一个任务开始跑,需要在另一个任务里边断下来的话,就应该使用global breakpoint。

Tornado初步

Tornado初步

Tornado初步1、概述 VxWorks操作系统的集成环境叫Tornado。

Tornado集成环境提供了高效明晰的图形化的实时应用开发平台它包括一套完整的面向嵌入式系统的开发和调测工具。

Tornado环境采用主机目标机交叉开发模型应用程序在主机的Windows 环境下编译链接生成可执行文件下载到目标机通过主机上的目标服务器Target Server与目标机上的目标代理Target Agent的通信完成对应用程序的调试、分析。

它主要由以下几部分组成 VxWorks高性能的实时操作系统应用编译工具交互开发工具下面对Tornado集成环境的各组件功能分别介绍 Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境同样也可以从Shell窗口下发命令和浏览。

WindConfigTornado系统配置通过WindConfig 可选择需要的组件组成VxWorks实时环境并生成板级支持包BSP的配置。

通过修改config.h可以实现WindConfig的所有功能并且可以实现WindConfig不能实现的功能。

WindSh:Tornado外壳 WindSh是一个驻留在主机内的C语言解释器通过它可运行下载到目标机上的所有函数包括VxWorks和应用函数。

Tornado外壳还能解释常规的工具命令语言TCL。

WindSh不仅可以解释几乎所有的C语言表达式而且可以实现所有的调试功能。

它主要有以下调试功能下载软件模块删除软件模块产生任务删除任务设置断点删除断点运行、单步、继续执行程序查看内存、寄存器、变量修改内存、寄存器、变量查看任务列表、内存使用情况、CPU利用率查看特定的对象任务、信号量、消息队列、内存分区、类复位目标机。

浏览器 Tornado 浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标如任务、消息队列、信号量等。

这些信息可周期性地进行更新。

CrossWind:源码级调试器源码级调试器CrossWind提供了图形和命令行方式来调试可进行指定任务或系统级断点设置、单步执行、异常处理。

使用调试工具解决复杂的程序问题

使用调试工具解决复杂的程序问题

使用调试工具解决复杂的程序问题调试工具是软件开发中非常重要的一部分,它们能够帮助我们识别和解决程序中的问题。

在处理复杂的程序问题时,调试工具可以节省我们大量的时间和精力,提高调试的效率。

下面我将会介绍几个常用的调试工具以及它们的优势和应用场景,来帮助我们解决复杂的程序问题。

1.调试器(Debugger)调试器是一种可以在程序运行中暂停和检查程序状态的工具。

它可以让我们逐行执行代码,并在途中检查变量的值和程序执行流程。

调试器可以在程序崩溃或者出现异常时,提供有关崩溃点或异常的相关信息,帮助我们定位和修复问题。

在处理复杂的程序问题时,调试器的价值尤为显著。

它可以让我们观察程序执行的每一步,帮助我们理解代码逻辑、变量的变化以及函数调用的顺序。

通过设置断点,我们可以在程序执行到指定的位置时暂停,并检查变量的值是否符合预期。

如果程序出现异常或崩溃,调试器还可以提供具体的错误信息、堆栈追踪等,帮助我们定位问题的源头。

2.日志工具(Logging Tools)日志工具是用于记录程序运行时产生的信息的工具,它们允许我们在程序中插入日志语句,帮助我们了解程序的内部状态和运行轨迹。

在处理复杂的程序问题时,日志工具可以帮助我们分析程序的执行流程。

通过在关键的代码段插入日志语句,并记录关键变量的值,我们可以在程序执行完成后,通过日志输出来查看程序的运行轨迹,以及变量的变化。

日志工具还可以被用于分析程序的性能瓶颈,通过在关键位置记录时间戳,我们可以计算每个步骤的执行时间,从而找到性能问题的根源。

3.静态代码分析工具(Static Code Analysis Tools)静态代码分析工具是一种静态分析源代码的工具,以发现源代码中的潜在问题。

这些工具通过模拟代码的执行,进行语法和语义分析,以及代码规范检查,识别出可能的错误和潜在的问题。

在处理复杂的程序问题时,静态代码分析工具可以帮助我们发现一些可能会被忽视的问题,如潜在的内存泄漏、未初始化的变量、不一致的函数调用等。

Tornado使用指南

Tornado使用指南

目录1.概述 (2)1.1 T ORNADO 组件 (2)1.1.1 开发工具 (2)1.1.2 实时系统 (3)1.1.3 Tornado 文件目录...................................................................................................................41.2 硬件/软件配置.. (7)1.3 booting介绍 (7)1.4 Tornado开始过程 (12)1.5 WDB 代理 (14)2Projects (15)2.1 bootable projects (15)2.2 集成模拟器vxsim (23)2.3 Downloadable projects (21)2.4 build说明 (24)3WindSh 和Browser (25)3.1WindSh (25)3.2 Browser (28)4 CrossWind (29)4.1Debugging简介…………………………………………………………………………29.4.2 任务级Debugging……………………………………………………………………..29.4.3 系统级Debugging (30)1. 概述VxWorks 是美国Wind River System 公司(以下简称风河公司,即WRS 公司)推出的一个实时操作系统。

WRS 公司组建于1981年,是一个专门从事实时操作系统开发与生产的软件公司,该公司在实时操作系统领域被世界公认为是最具有领导作用的公司。

VxWorks 是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

Tornado开发环境介绍

Tornado开发环境介绍

2.Tornado核心工具介绍
2.4 WindView

WindView是一个图形化的动态诊断和分析工具,主要 是向开发者提供目标机硬件上实际运行的应用程序的 许多的详细情况 看到目标机的任务切换、信号量、消息队列、中断、 看门狗等信息

2.Tornado核心工具介绍
2.4 WindView
2.Tornado核心工具介绍
5.连接开发板需要注意的事项和 步骤
5.配置tornado中的Target Server参数,将core files中指向的映像文 件和通过ftp下载的映像文件一致。将target server中的target地址设 为192.168.0.10(举例,可以改),选择back end方式为rpc通讯方 式。 unch target server,如果成功,在任务栏右下角会出现红色的蜗 牛,点击它可以看到连接成功的信息。 这时候表示开发主机和开发 板连接正确。 7. 可以将编译好的.out执行文件下载执行。
结束!

所有的Tornado工具(诸如Shell、Debugger及 Browser等等,这些工具的使用将在后面的章节介绍) 使用WTX (Wind River Tool Exchange ) 协议同 Target Server通讯,Target Server再将请求消息送 往目标机上的Target Agent,这就避免了主机工具频 繁地访问目标机。
3.工程类型介绍(Bootable和 Downloadable)
3.1 Bootable类型的工程

Bootable VxWorks image类型的工程是可下载的 VxWorks 映像,包含了必须的VxWorks 内核、组件 以及BSP。也可以烧到flash里面进行固化。

tornado调试技巧

tornado调试技巧


中兴通讯
windView
察看和分析任务执行信息的图型工具。 不常用

中兴通讯
结束
问题与解答???
谢谢!!!

tt "logTask" 3ab92 _vxTaskEntry +10 : _logTask (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ee6e _logTask +12 : _read (5, 3f8a10, 20) d460 _read +10 : _iosRead (5, 3f8a10, 20) e234 _iosRead +9c : _pipeRead (3fce1c, 3f8a10, 20) 23978 _pipeRead +24 : _semTake (3f8b78)

中兴通讯
Windsh-任务信息
i 所有任务的名字,入口函数,tid,优先权,当前pc, sp,错误号等 注意:如果显示中任务名为空,则很有可能发生了越 栈现象。tid就是tcb块开始的地址,可以通过这个地址 察看和修改里面的内容 ti (参数为任务名或tid) 显示任务tcb块的完整信息。通常关注信息是: 堆栈的信息(栈头,栈尾,最大使用栈的大小) 寄存器(sp(ppc里的r1)的值,pc的值,函数参数 值(ppc的r3,r4,r5),fp(如ppc的r31))
中兴通讯
Windsh-其它
devs 显示系统所有设备 可以找出对应的串口号。 semShow 显示信号量的信息

中兴通讯
WindView
Tornado调试概述 crossWind (tornado debugger) browser windSh(tornado shell) WindView

调试工具的最佳使用方法

调试工具的最佳使用方法

调试工具的最佳使用方法调试工具是软件开发中必不可少的一部分,它们帮助我们诊断和解决代码中出现的问题,提高代码的稳定性和性能。

然而,很多开发人员只是简单地使用调试工具,而没有充分利用它们提供的所有功能。

本文将介绍调试工具的最佳使用方法,以帮助您更好地使用它们,提高开发效率和代码质量。

一、代码调试工具1.调试器调试器是一种可以让您逐行执行代码并在执行过程中查看变量值和调用堆栈的工具。

它可以让您精确地定位错误的位置和原因,并对代码进行修改和测试。

在使用调试器时,请确保您已经仔细检查了代码,并已经了解了其大致的执行流程。

此外,还需注意在调试期间不要修改重要的数据或状态,避免产生不可预测的结果。

2.内存调试器内存调试器可以帮助您检测和解决内存泄漏和内存溢出问题。

它可以跟踪内存分配和释放操作,同时监视内存使用情况。

使用内存调试器时,需要注重对内存的分配和释放进行管理,并避免多次分配同一块内存空间,导致内存泄漏的问题。

3.性能分析工具性能分析工具可以帮助您找出代码中的性能瓶颈和热点,以实现更高效的代码。

它可以很容易地找出哪些方法或函数最耗费时间和资源,并提供调优建议。

使用性能分析工具时,需要注意对性能瓶颈进行优化,并避免对性能无关的操作进行过度优化。

二、版本控制工具版本控制工具可以帮助您管理代码的历史记录和版本,及时回滚和修复错误,以保证代码的质量和稳定性。

以下是一些主要的版本控制工具:1.GitGit 是一种分布式版本控制系统,它可以快速、高效地处理大型项目的版本管理。

它可以追踪代码的更改历史记录,并轻松处理多个开发人员同时修改同一文件的问题。

2. SVNSVN 是另一种流行的版本控制系统,它是集中式的,处理分支和合并操作更加方便。

它可以快速地备份和回滚代码,也可使用各种插件扩展其功能。

3. MercurialMercurial 是一个快速、稳定和灵活的分布式版本控制工具。

它可以管理大型项目、支持多平台和各种协议,并与其他版本控制系统兼容。

Vxworks 开发工具(tornado)的使用教程

Vxworks 开发工具(tornado)的使用教程

一.认识Tornado II和VxworksVxWorks是一种嵌入式的实时操作系统,所谓嵌入式系统就是用户自己开发设计板子,板子上通常有一颗CPU,VxWorks支持32位的CPU,包括Intel公司的x86、Motorola 公司的68k和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。

我们设计的板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。

宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT或UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。

我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。

在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。

二.Tornado II IDE的主要组成Tornado II IDE的主要组成部分有:1.集成的源代码编辑器(可惜不支持汉字输入)。

2.工程管理工具。

3.集成的C和C++编译器和make工具。

4.浏览器,用于收集可视化的资源,*目标系统。

5.CrossWind,图形化的增强型调试器。

6.WindSh,C语言命令外壳,用于控制目标机。

7.VxSim,集成的vxworks目标机仿真器。

8.WindView,集成的软件逻辑分析仪。

9.可配置的各种选项,可以改变归Tornado GUI的外观等。

tornado中windview使用手册(附实例)

tornado中windview使用手册(附实例)

tornado逻辑分析工具windview1、构造适合的镜像文件要想使用windviewer,首先镜像文件中要包含该组件。

如图:选中的组件下方的组件即为windviewer components,该组件加粗显示,表示该镜像已经包含了该组件。

如果没有包含,鼠标右键单击该组件,选择include…选项,即可加入该组件。

如图,展开该组件可以看到:Windviewer组件下包含了select timestamping组件。

注意该组件中还包含了3个组件,系统默认选择sequential timestamping组件,选择该组件后,在Windviewer绘制的逻辑分析图中,横坐标不是时间标示,而是一种连续的等间隔标示,并且相同的任务间隔相同。

见tornado提供的说明:When the real-time system runs on an unsupported board, or on a supported board without the timestamp driver included, the instrumented kernel automatically uses its sequence-stamp driver. This driver tags events with sequence numbers that represent the order in which the events occur on the target. The events are then spaced equidistantly from each other in the view graph;∙The timeline scale is in event sequence numbers rather than seconds.∙The events are displayed equidistantly from each other.在该选择下,横坐标单位是#,可以在下图的左下角看到:可以看到,该图的横坐标范围为48#而如果选择system-defined timestamping组件,获得的分析图如下:同样可以在该图的左下角看到横坐标范围为491.272ms,可以显示精确的时间区间。

Tornado-开发环境

Tornado-开发环境

• 通信后端【Back End】 根据不同的目标机,可以选择不同的Target Server通信后端与目标机的Agent通 信。其中wdbrpc用于网络连接;wdbserial用于串行通道连接;wdbpile用于 Visxim仿真目标机连接 ;netrom用于一专有的通讯协议;loopback用于测试; 选择的后端类型与Agent中选择的WDB connection类型一致才能建立主机与目标 机之间的WDB连接。各后端的动态库位于“\host\x86-win32\lib\backend”目录 下。 wdbrpc是最常使用的一种:
• Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境, 给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环 境。
• Tornado开发系统包含三个高度集成的部分:运行在目标机上的高性能、可 裁剪的实时操作系统VxWorks;运行在宿主机的强有力的交叉开发工具和实 用程序,可对目标机上的应用程序进行跟踪和调试;连接宿主机和目标机的 多种通讯方式,如:以太网,串口线,ICE或ROM仿真器等。
工程管理
• Tornado以工程(project)为单位组织软件开发,工程中包括源代码信 息、VxWorks配置和编译配置等。Tornado提供了工作空间(workspace) 机制,用于工程的组织和管理。Tornado可以创建多个工作空间,每一 个工作空间可以包含多个工程。每个工程又能引用多个源代码文件,组 成层次结构。工作空间主要用在主机上安装有多个不同版本的Tornado 时,每个工作空间可以以Torndao的版本命名。
P
H
I
wind Microkernel
C
S
Debug Agent
BSP

第二讲 嵌入式操作系统VxWorks及其开发工具Tornado(2010)

第二讲 嵌入式操作系统VxWorks及其开发工具Tornado(2010)

第二讲:嵌入式操作系统VxWorks及其开发工具Tornado主讲人:办公地址:联系方式:刘利强31号楼222房间82519069上节课主要内容:⏹为什么要学习嵌入式技术⏹嵌入式系统概述⏹嵌入式系统的应用⏹嵌入式实时系统基础132基础知识介绍交叉开发环境的建立方法Tornado 工具及其使用方法4常用的软件调试开发方法⏹什么是VxWorks?⏹为什么VxWorks被广泛采用?⏹VxWorks系统与通用操作系统的对比⏹什么是Tornado?⏹Tornado的工具及其开发环境⏹Tornado的目录结构⏹Tornado的主要目录结构什么是VxWorks?VxWorks操作系统是美国风河公司(Wind River System 公司,WRS)于1983年设计开发的一种运行在目标机上的高性能、可裁减的嵌入式强实时操作系统。

它凭借着良好的可持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据了重要一席。

VxWorks系统具备高可靠性和实时性,目前被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。

如美国的F-16战斗机、FA-18战斗机、B-2隐形轰炸机、爱国者导弹上、火星探测器等均使用了VxWorks操作系统。

什么是VxWorks?VxWorks的主要组成如下:⏹高性能系统内核Wind➣多任务调度(基于优先级抢占方式的实时调度算法)➣内部任务的通讯⏹其它标准工具➣设备驱动➣文件系统➣I/O系统➣内存管理➣网络协议栈为什么VxWorks被广泛采用?⏹可靠性考虑操作系统的用户希望在一个工作稳定、可以信赖的环境中工作,而稳定、可靠是VxWorks的一个突出优点。

⏹实时性考虑⏹可裁剪性考虑由于存储空间和资源的限制,及提高运行效率考虑,用户在使用嵌入式操作系统时,并不是操作系统的每一个部件都要用到,例如图形显示、文件系统以及一些设备驱动在某些嵌入式系统中往往并不使用。

PythonTornado简介

PythonTornado简介

PythonTornado简介简介Tornado 是 FriendFeed 使⽤的可扩展的⾮阻塞式 web 服务器及其相关⼯具的开源版本。

这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利⽤⾮阻塞式服务器环境,这个 Web 框架还包含了⼀些相关的有⽤⼯具和优化。

Tornado 和现在的主流 Web 服务器框架(包括⼤多数 Python 的框架)有着明显的区别:它是⾮阻塞式服务器,⽽且速度相当快。

得利于其⾮阻塞的⽅式和对epoll的运⽤,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是⼀个理想的 Web框架。

我们开发这个 Web 服务器的主要⽬的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应⽤⾥每⼀个活动⽤户都会保持着⼀个服务器连接。

Tornado安装pip3 install tornado初识Tornado⾸先打开pycharm,新建⼀个⼲净的project新建⼀个py⽂件:import tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): # 类似于Django⾥⾯的CBVdef get(self): # get⽅法self.write("Hello, world")application = tornado.web.Application([ # 类似于Django⾥⾯的路由系统(r"/index", MainHandler),])if__name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start() # 启动app.py运⾏⽂件并打开浏览器访问⽹址:运⾏该脚本,依次执⾏:创建⼀个Application对象,并把⼀个正则表达式'/'和类名MainHandler传⼊构造函数:tornado.web.Application(...) 执⾏Application对象的listen(...)⽅法,即:application.listen(8888)执⾏IOLoop类的类的 start() ⽅法,即:tornado.ioloop.IOLoop.instance().start()由上述分析,我们将整个Web框架分为两⼤部分:待请求阶段,即:创建服务端socket并监听端⼝处理请求阶段,即:当有客户端连接时,接受请求,并根据请求的不同做出相应的相应经典的Login案例⾸先,创建模版⽂件夹和模版⽂件:login.html⽂件<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form method="POST" action="/login"><input type="text" name="username" /><input type="submit" value="提交" /></form></body></html>新建⼀个路由:(r"/login", LoginHandler),新建CBV:class LoginHandler(tornado.web.RequestHandler): def get(self):self.render("login.html")def post(self, *args, **kwargs):# 获取url中以GET形式传递的数据self.get_query_argument()self.get_query_arguments()# 去请求体中获取传递的数据self.get_body_argument()self.get_body_arguments()# 去get&post双⽅去取数据user = self.get_argument('username')print(user)self.redirect('')注册模版⽂件路径:# 申明settings,字典格式settings = {'template_path': 'tmp'}# 注册进tornado内部application = tornado.web.Application([(r"/index", MainHandler),(r"/login", LoginHandler),], **settings)整体app⽂件:#!/usr/bin/env python3# encoding: utf-8# Author: Dandyimport tornado.ioloopimport tornado.webclass MainHandler(tornado.web.RequestHandler): def get(self):self.write("Hello, world")class LoginHandler(tornado.web.RequestHandler): def get(self):self.render("login.html")def post(self, *args, **kwargs):# 获取url中以GET形式传递的数据self.get_query_argument()self.get_query_arguments()# 去请求体中获取传递的数据self.get_body_argument()self.get_body_arguments()# 去get&post双⽅去取数据user = self.get_argument('username')print(user)self.redirect('')settings = {'template_path': 'tmp'}application = tornado.web.Application([(r"/index", MainHandler),(r"/login", LoginHandler),], **settings)if__name__ == "__main__":application.listen(8888)tornado.ioloop.IOLoop.instance().start()View Code此时便可执⾏关于静态⽂件⾸先添加静态⽂件夹,并放⼊⼀张图⽚静态路径注册:settings = {'template_path': 'tmp','static_path': 'statics'}login页⾯加⼊图⽚、注意以下路径写的是static,标准⽤法<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form method="POST" action="/login"><input type="text" name="username" /><input type="submit" value="提交" /></form><img src="/static/炫雅.jpeg" /></body></html>此时访问页⾯那能不能不⽤static作为静态⽂件夹名称呢?答案当然是可以的,只需要这样注册:settings = {'template_path': 'tmp','static_path': 'statics','static_url_prefix': '/jingtai/', # 这⾥就是⽤户⾃定义的静态路径名称}再去修改login⽹页⾥的就好了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

T ornado调试工具介绍
网络上海软件开发二部
crossWind (tornado debugger)
重要的设置步骤:
1、配置tools->target server->config
a、在target name/ip address中输入目标板子的ip地址。

b、在back end 处选上wdprpc,如果网络不好,可以在timeout中输入2s
c、在core file and symbols的文件中选上需要调试的vxWorks或vxWorks.st
d、memory cache Size 设置为10000。

e、这样就可以启动这个target server了
2、Debug->Source search path 中加上你要调试的原代码的路径。

典型故障:
1、PING目标机也通,想调试程序,但target server 启不来,现象如下:
Connecting to target agent...
Error: rpccore backend client Unable to receive failed.
解决:检查target server 的配置,其中Core file应选为下载的vxworsk image。

假设target server 的配置是正确的,那么就检查Tornado中对vxworks的配置,选择wdb connection为end 方式。

2、启动target server后,出现
Warning: Target checksum: 0xa7fc (computed from 0x108340 to 0x2170d0).
Host checksum: 0xa8fd (computed from 0x1830380 to 0x193f110).
Warning: Core file checksums do not match.
解决:下载的VxWorks核和target server路径下的文件不是同一个文件,有可能是因为重新编译了VxWorks(即使不修改任何内容,两次编译的结果仍然会不同)。

3、启动target server后,出现
Warning: Target server cache for agent memory is full.
Use the '-m' option to increase the target server cache.
解决:target Server的Memory cache size默认为1M,适当加大。

常用功能:
breakPoint:设置断点,当任务执行到本断点后会stop,前提是我们设置了auto attach to task,在没有设置此选项的情况下,必须手工attach 到某一任务。

有全局断点和任务断点
Step: 单步功能,跟其他调试环境类似。

Watch:设置watch 变量。

V ariable:变量查看,主要是当前被调试的函数的局部变量和全局变量。

注意:Watch V ariable和显示的变量值可能会不对,最好去和内存中去确认,或者看寄存器或者打印。

(arm)
Registers: 查看寄存器当前值。

Memory:查看内存值。

Back trace:栈回溯,通过栈回溯,可以看到函数的调用关系,针对每一个栈帧,可以查看调用时各个函数的执行环境,包括参数、寄存器等。

Attach:attach到某一运行任务,attach之后,整个任务便在调试器的控制之下。

Run:创建一个任务,并执行,调试器会自动attach到这个任务。

Diassemble:反汇编能力,可以和c语言同时对应显示
常见问题:
1、如果在taskSpawn的时候选项中设置了VX_UNBREAKABLE,那么就不能设置断点调试。

使用taskOptionsSet(int tid, int mask, int newOptions)修改任务选项。

例如在Target Shell 上去掉tShell的不允许设置断点的选项:taskOptionsSet(0, 2, 0);这样就不需要重新制作版本了。

2、如果打开了优化开关,O2那么无法单步调试,代码和汇编对不上。

3、编译时没有使用-g编译开关。

会无法设置断点。

4、断点位置不准确,和代码对不上,可能是由于链接的不是该原代码文件,或者代码和target server的版本有差异
browser
1、察看stack信息
可以察看当前stack使用量和最大stack的使用量,当任务堆栈的使用率较高时需要特别注意(相应加大任务堆栈或优化代码减少堆栈使用量)。

注意:
如果在taskSpawn的时候选项中设置了VX_NO_STACK_FILL,那么就无法察看相应任务的stack使用量了。

在shell中用checkStack也可以察看各任务stack的使用情况。

2、察看cpu占有率Spy
当感觉系统运行很慢时,可以用spy察看哪些任务占cpu太多时间了。

可以使用SPY分析各任务的CPU占有率情况,特别关注CPU占有率较高的任务或中断。

注意:
有的tornado显示用不了spy,那么可能要把spyLib.o 这个文件copy到lib/objppc603gnuvx目录下。

3、任务信息
可以用i,ti,tt
4、内存信息
相当于memShow
5、Module信息
不好用
windSh(tornado shell)
任务信息相关:
i
所有任务的名字,入口函数,tid,优先权,当前pc,sp,错误号等
注意:如果显示中任务名为空,则很有可能发生了越栈现象。

tid就是tcb块开始的地址,可以通过这个地址察看和修改里面的内容
ti (参数为任务名或tid)
显示任务tcb块的完整信息。

通常关注信息是:
堆栈的信息(栈头,栈尾,最大使用栈的大小)
寄存器(sp(ppc里的r1)的值,pc的值,函数参数值(ppc的r3,r4,r5),fp(如ppc的r31))
sp 函数名,参数值
发起一个新的任务,任务名为t1,t2…..
ts
挂起一个任务,
tr
让任务继续运行
td
删除一个任务
tt
显示一个任务的栈的函数回溯信息(还包含了调用的函数的参数)
tt "logTask"
3ab92 _vxTaskEntry +10 : _logTask (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
ee6e _logTask +12 : _read (5, 3f8a10, 20)
d460 _read +10 : _iosRead (5, 3f8a10, 20)
e234 _iosRead +9c : _pipeRead (3fce1c, 3f8a10, 20)
23978 _pipeRead +24 : _semTake (3f8b78)
注:有时堆栈被破坏,tt无法显示,可以选择修改sp的值,让它退到可以回溯的栈的位置。

mRegs修改寄存器。

或直接修改内存的tcb块
tw
可以显示指定任务是挂起在那个信号量上。

注意:只能在tornado的shell中使用,在tShell中不能使用。

内存相关:
d ,地址,显示的单元数,宽度(1,2,4,8)
显示内存
m 地址,宽度
修改内存
memShow 1
显示内存的使用信息,如后参数1则显示详细的free memory信息
memShow 1
FREE LIST:
num addr size
--- ---------- ----------
1 0x3fee18 16
2 0x3b1434 20
3 0x4d188 2909400
SUMMARY:
status bytes blocks avg block max block
------ --------- -------- ---------- ----------
Current
free 2909436 3 969812 2909400
alloc 969060 16102 60 –
Cumulative
alloc 1143340 16365 69 -
如果内存链表给破坏了,可以通过和正常的free list比较推断破坏在哪个地方。

memPartShow
和代码相关:
l
反汇编,由于static的函数名和静态变量没有包含进符号表,所以不能完全看出代码是哪个具体的函数,要想准确知道,可以在tornado 的debug中用反汇编或者用objdumpppc –d,
nmppc
lkAddr
察看该地址离哪些符号(函数名,全局变量名)比较近。

lkup
察看变量的地址
注:符号表是通过symTbl.c链接进来的,只包含了全局信息。

和调试相关:
b 设置和显示断点
b就是显示断点,b 地址-设置断点
bd 删除断点
bd 地址
bdall 删除所有断点
bh 设置硬件断点
如:PPC860就可以,PPC604就可以设置读写内存的断点。

其它:
devs 显示系统所有设备
可以找出对应的串口号。

semShow 显示信号量的信息
WindView
察看和分析任务执行信息的图型工具。

不常用。

相关文档
最新文档