vxworks+debug
风河Woorkbench3.0_VxWorks6.6应用程序开发使用说明

说明:由于开发经验和英语水平有限,在本文档中肯定存在偏差和谬误。
在有疑问的地方,请以风河的官方文档为准。
欢迎联系,指正错误。
QQ:1039309823。
风河Woorkbench3.0/VxWorks6.6使用说明第一章工程视图(Projects Overview)Workbench利用工程( Projects)就像逻辑容器和积木块——它们能够连接在一起创建一个软件系统。
工程( Projects)窗口可以直观地组织工程结构反映在内部的依赖关系上,以及编译和链接的次序。
前期配置的各种不同的工程允许在后面建立或添加工程时使用与之前的工程相同的配置和建立方式,因而只需要极小的输入。
一、Workspace/Project 的设置Wind River Workbench并不知道使用者的源文件在哪一个地方,在开始的使用的时候Wind River Workbench在安装目录下有一个默认的工作空间(workspace )的目录。
但是这不是必需的或者说并不一定是合理的,当使用者的工作空间因为产品升级或者更改安装目录已经完全存储在当前的安装目录树之外的时候!通常,使用者需要把workspace目录设置在当前的源文件树的根目录下并且在此创建Workbench工程。
对于各种不同的源文件树,可以使用不同的工作空间(workspaces)。
当决定在什么地方建立工程(projects)要做以下考虑:1.在workspace建立工程如果使用者想要新建一个工程在workspace下,通常的情况有A.所建的工程还没有建立源文件。
B.所建的工程已经存在源文件,但需要添加进工程。
C.所建的工程不允许设置在源文件目录处。
2.在workspace外部建立工程在创建工程时,点击“Browse”,将要建立的工程放置在在与workspace不同的目录。
通常的情形有:A.所建的工程建立在已有的原文件之上,改变工程目录之后需要对源文件进行添加和链接。
VxWorks操作系统下软件测试的故障注入方法的制作方法

本技术涉及一种VxWorks操作系统下软件测试的故障注入方法,涉及嵌入式软件测试和VxWorks操作系统技术领域。
本技术通过在软件源代码中增加测试代码的方式,能够实现在特定的位置和特定的时刻对软件源代码中的全局变量、局部变量、寄存器、堆栈以及软件接口等的故障注入和测试,提高软件的测试覆盖率和可靠性。
该方法不需要修改原有的软件源代码,也不需要额外的监控器设备,只是在软件运行时,根据故障注入的时间和位置增加部分测试软件源代码,通过增加的这部分代码,可以实现软件运行过程中动态地改变代码中关键的全局变量、局部变量、寄存器、硬件地址和软件接口等信息内容,完成软件故障注入测试。
技术要求1.一种VxWorks操作系统下软件测试的故障注入方法,其特征在于,包括以下步骤:S1、建立软件故障测试用例库;S2、通过telnet工具或Shell工具向目标系统注入故障。
2.如权利要求1所述的方法,其特征在于,步骤S1具体为:对嵌入式软件进行功能故障树分析,通过系统级和详细级失效模式及影响分析,最终从软件源代码中识别出特定关键的全局变量、局部变量、寄存器、硬件地址和软件接口这些信息;然后基于识别出的这些信息进行软件测试用例设计,形成软件故障测试用例库。
3.如权利要求2所述的方法,其特征在于,步骤S2中,在telnet工具、Shell工具或串口工具中键入一些特定的指令完成向目标系统的故障注入,这些指令是根据故障测试用例而自定义的不同函数,在每个函数内完成对全局变量的赋值,用这种方法实现故障的动态注入。
4.如权利要求3所述的方法,其特征在于,步骤S2具体为:在目标系统软件源代码中增加消息队列B和任务T1,该任务用于接收消息队列B中的故障测试用例,并根据每个故障测试用例的功能和性能要求,增加对应的函数,每个函数的功能是向消息队列B发送对应的故障测试用例,故障测试用例是按照约定的网络通讯协议制定的指令报文。
5.如权利要求4所述的方法,其特征在于,所述指令报文用于实现单点故障测试,或故障序列测试。
VxWorks调试环境构建全过程

VxWorks 调试环境构建全过程设定VxWorks开发环境如下:宿主机端(Host):普通PC机一台;Tornado2.0 IDE;BSP为x86 Pentium3架构。
目标机(Target): x86 Pentium3 CPU, 网卡为intel8255x系列(标识:fei)。
主机和目标机通过网线连接,制作步骤详述如下(为了图文一致,以下假设目标机BSP文件夹名为:pcPentium):1 .修改配置文件我们要修改编译VxWorks的配置头文件Config.h中定义的一些参数,使编译出来的系统引导程序和VxWorks的映象符合我们的要求。
(1)定位到目录C:\tornado2.2\target\config\pcPentium并打开该目录下Config.h文件;(2)查找到定义DEFAULT_BOOT_LINE宏的地方,修改预处理条件CPU == PENTIUM3分支下的定义如下:#define DEFAULT_BOOT_LINE \"fei(0,0)host: vxWorks h=192.168.80.169 e=192.168.80.254 u=target pw=target tn=target"其中:∙fei(0,0)指定了使用第0个网卡和第0个处理器,fei这个标识代表intel8255x系列100M网卡,若目标机为intel8255x系列网卡,则标识为gei;∙host指定你的主机的名字,使用host就可以;∙vxWorks指定了VxWorks映象下载的完整路径(后面会有说明);∙h=192.168.80.169是宿主机的IP地址,可以根据实际情况修改;∙e=192.168.80.254是目标机的IP地址,可以根据实际情况修改;∙u=target指定了FTP服务器的用户名,这个FTP就是用来下载VxWorks 映象的;∙pw=target是FTP服务器与用户名target对应的密码;∙tn=target指定目标机的名字,任意指定即可。
以ARM为例的Vxworks开发工具的使用操作流程

以ARM为例的Vxworks开发工具的使用操作流程一.认识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的外观等。
vxworks+debug

图形化交叉调试器简介1. 简介CrossWind/WDB是tornado提供的基于源代码的调试工具,它支持任务级和系统级调试,支持混合代码和汇编代码显示,并且支持目标机同时调试。
WindDebug(WDB)协议是一种用于调试的私有协议,目标机(target)通过WindDebug(WDB)协议与开发机(HOST)之间交互通信。
主机-目标机交互方式如下:HOST ┆ Target┌──────>wtxregd ┆v ^ ┆Tool<────┐│┆VxWorksTool<────┼> tgtsvr <────────------->WDB AgentTool<────┘┆本地必须启动一个target server,目标机中必须有WDB agent,这样才能进行交叉调试。
target server(目标机代理)Target server提供基于主机的目标机资源管理,以便于Tornado工具访问目标机,功能如下:与目标机上的debug引擎进行通讯动态模块下载和卸载常驻主机的目标机符号表在目标机上为主机上的工具分配内存缓存目标机代码text段支持虚拟IOTarget server增强了主机和目标机之间的灵活性,使得主机工具对目标机的影响最小,主机工具与主机和目标机之间的通信方式互相独立,所有的Tornado工具均使用WindRiver Tool Exchange协议(缩写为WTX)与target server通信。
WTX协议具体内容参见Tornado API指南。
Target server通过下列方式响应工具的WTX请求:操作缓存中的信息发送请求到目标机上的WDB agent中Wtxregd在启动target server和工具之前要先启动wtxregd。
Tornado工具、registry和target server可以运行在不同主机上,Tornado registry程序必须运行在指定的主机上。
VxWorks的调试手段

2.Browser
• 可对系统对象(任务、消息队列、信号量等)和 存储器使用情况进行观察的浏览器。可以方便地 监视用户的 目标系统。Browser汇总了应用进程, 内存消耗和一个目标内存的映像。通过 Browser, 用户可以观察信号量、消息队列、内存分配、看 门狗计时器、堆栈使用情况、目标 CPU使用率、 对象模块结构和符号表以及每个任务的详细信息。 • 可以分析: 内存泄漏、内存碎片、堆栈溢出、优先 级反转
•
•
•
•
•
•
如何查看error.log文件 如何查看error.log文件
记下了发生异常的任务号、进程号、当前处理消息、内存占用情况、堆 栈调用关系等有用信息: Current call stack: nargs=10; 0x1157c02 : 0x115f80 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) nargs= 1; 0x115f91 : 0x11c09f (0) nargs= 1; 0x11c106 : 0x11e89c (0x1d8db07b) nargs= 1; 0x11e8c5 : 0x11bac8 (0x1d8db07b) nargs= 0; 0x11bae0 : 0x11e91c () nargs= 3; 0x11e947 : 0x15a1f0 (0x1df0c7fb, 0, 0) nargs= 1; 0x15a2e4 : 0x15a640 (0x1df0c7fb)
VxWorks & 支撑系统 调试手段
2004-082004-08-17
Tornado:Vxworks集成开发环境 Tornado:Vxworks集成开发环境
调试机(Host)与目标机(Target)
一 Tornado的调试工具 Tornado的调试工具
VxWorks常用命令汇总
VxWorks常⽤命令汇总VxWorks常⽤的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建⼀个周期调⽤function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建⼀个反复调⽤function的任务,调⽤次数为m,m=0时永久调⽤,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显⽰任务基本信息,参数为0时显⽰全部任务ti tidX -显⽰任务详细信息,包括寄存器、堆栈等tt tidX -显⽰任务的函数调⽤关系checkStack tidX -显⽰任务堆栈使⽤的历史统计,参数为0时显⽰全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显⽰addr地址附近的符号表l addr,[n] -显⽰addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执⾏的shell命令,默认20条;n⾮0时,设定shell记录的历史命令的数⽬d [addr,[number],[width]]-显⽰addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显⽰系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与⽹络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述⼤多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第⼆个单词开始⼤写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前⽹络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进⼊⽬录11 vxWorks cfIdeInit 每次上电后执⾏12 vxWorks cfFormat 新卡(或者是未格式化的卡)插⼊的时候执⾏,只需执⾏⼀次13 vxWorks ll 以详细模式查看当前⽬录下的⽂件14 vxWorks ls 以简单模式查看当前⽬录下的⽂件15 vxWorks version 查看编译时间16 vxWorks td xxx 终⽌xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs⽂件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增⼀个tffs格式的⽂件系统22 vxWorks pwd 查看当前操作所在的⽬录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx 的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运⽓好,shell没有被挂起,则可以通过系统的⼀些命令追踪⼀下挂起的原因。
vxworks命令教程2024新版
文件创建、打开和关闭
创建文件
使用`creat()`函数创建新文件,需要指定文件名和访 问模式。
打开文件
使用`open()`函数打开已存在的文件,同样需要指定 文件名和访问模式。
关闭文件
使用`close()`函数关闭已打开的文件,释放相关资源 。
文件读写操作
01
读取文件
写入文件
02
03
telnet
远程终端服务命令,用于建立TCP连接 并远程登录到目标主机。
ftp
文件传输协议(FTP)命令,用于在网 络上传输文件。
tftpபைடு நூலகம்
简单文件传输协议(TFTP)命令,用 于在网络上进行简单的文件传输。
网络诊断和调试
netstat
网络统计命令,用于显示网络 连接、路由表、接口状态等网
络相关信息。
在嵌入式系统开发中,命令行接口(CLI )是一个不可或缺的工具。通过CLI,开 发者可以与系统进行交互,执行命令,查 看系统状态,调试问题等。
本教程旨在帮助开发者熟悉并掌握 VxWorks的命令行接口,以便更有效地 进行嵌入式系统开发和调试。
教程范围
基本命令介绍
涵盖VxWorks中常用的基本命令, 如任务管理、内存管理、时间管理
ndp
邻居发现协议(NDP)命令,用于 IPv6网络中的邻居发现和管理。
route
用于设置和查看路由表,实现网络数 据包的正确转发。
dhcpc
动态主机配置协议客户端(DHCP Client)命令,用于从DHCP服务器 获取网络配置信息。
数据传输和接收
ping
用于测试网络连接可达性,发送ICMP 回显请求并接收回显应答。
VxWorks 6.3 编程调试要点
VxWorks 6.3 编程调试要点(仅供内部使用)文档作者:周礼兵日期:2007-03-05开发/测试经理:_______________ 日期:___/___/___项目经理:_______________ 日期:___/___/___版权所有不得复制目录目录 (2)1系统特点 (3)2编程调试 (3)2 .1应用程序的运行 (3)2 .1.1Shell 下运行 (3)2 .1.2自启动运行 (4)2 .1.3通过workbench运行 (4)2 .2内核模块的运行 (4)2 .3ROMFS (4)2 .4应用程序的系统调用 (5)2 .4.1系统调用的一些约束 (5)2 .4.2静态的增加系统调用函数 (5)2 .4.3动态的增加系统调用函数 (6)2 .5共享数据区域 (7)2 .6动态库 (7)2 .6.1共享库(Shared Libraries) (7)2 .6.2Plug-ins (7)2 .7多任务 (8)2 .7.1任务变量(Task Variables) (8)2 .7.2VxWorks task (8)2 .7.3POSIX Threads (8)2 .7.4任务调度 (8)2 .8信号量 (8)2 .8.1VxWorks semaphores (8)2 .8.2POSIX Semaphores (8)2 .9消息队列 (8)2 .9.1VxWorks Message Queues (8)2 .9.2POSIX Message Queues (8)2 .10Sockets (8)2 .11Pipes (9)2 .12VxWorks events (9)2 .13POSIX Queued Signals (9)2 .14内存管理 (9)2 .15Shell 解析器 (9)3设计要点 (10)参考文档 (11)VxWorks 6.3 编程调试要点关键词: 内核态、用户态、消息、信号、信号量、管道、任务、线程缩略语说明:RTP(real-time process)、POSIX(Portable Operating System UNIX)、MMU(Memory Management Unit)1 系统特点VxWorks 6.3除了兼容以前低版本(如:VxWorks 5.5)内核外,增加一些其它的功能。
vxworks6.6-Workbench3.0仿真测试和调试指南
Workbench3.0-vxworks6.6仿真测试和调试指南VxWorks5.5只能创建静态库(.a),VxWorks6.0之后增加了动态链接库(.so)的功能,方便了多进程使用动态库。
本文继承win32和linux编程入门的一贯风格,通过简单的动态库生成步骤,并编写RTP程序进行测试,让您初步认识VxWorks6.6强大的功能,同时也让我们注意到VxWorks6.6比VxWorks5.5在使用要复杂很多。
我相信通过这些简单的编程知识点,您基本掌握了VxWorks6.6调试技巧,让我们后来者不必在调试过程中去探索黑暗。
本文基本使用图形来描述操作流程:一副图低得上千言万语了。
VxWorks6.0之后版本新增引入了具有完全保护功能的实时进程Real Time Process简称RTP,首次完美的解决了内核保护与实时性和确定性之间的矛盾。
用户可以根据需要动态的创建/删除RTP实时保护进程或仅将一部分程序运行在RTP实时保护进程中。
RTP 实时进程可以随时动态加载运行外部程序。
每个RTP进程完全独立,程序在RTP进程内部出现的任何错误都被限制在RTP进程内部,删除RTP实时进程时自动释放所有资源。
RTP与其他多进程OS不同的是,VxWorks的RTP实时进程具有完全的静态确定性,提供保护功能的同时提供最高的实时响应确定性和快速性,并且可以提供完全的存储错误检测和存储报告功能。
动态链接库和共享数据区功能也同时提供。
RTP实时保护进程与VWorks 原有的更高性能实时任务一起构成保护性和实时性兼备的超级设备平台.动态库生成1、选择工程工作路径2、正常打开的初始界面一般情况下左下角出现相似的界面,说明您的VxWorks6.6系统基本安装正常。
需要注意的是系统安装了Tornado2.2会与WorkBench3.0冲突,最好要把Tornado2.2卸掉,操作系统Win7不支持两者的安装。
3、创建动态库工程4、动态库名称5、编译选择这里我们选择diab工具编译,gnu编译工具在调试c++中的Class类有点问题,具体原因我没有去研究。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形化交叉调试器简介1. 简介CrossWind/WDB是tornado提供的基于源代码的调试工具,它支持任务级和系统级调试,支持混合代码和汇编代码显示,并且支持目标机同时调试。
WindDebug(WDB)协议是一种用于调试的私有协议,目标机(target)通过WindDebug(WDB)协议与开发机(HOST)之间交互通信。
主机-目标机交互方式如下:HOST ┆ Target┌──────>wtxregd ┆v ^ ┆Tool<────┐│┆VxWorksTool<────┼> tgtsvr <────────------->WDB AgentTool<────┘┆本地必须启动一个target server,目标机中必须有WDB agent,这样才能进行交叉调试。
target server(目标机代理)Target server提供基于主机的目标机资源管理,以便于Tornado工具访问目标机,功能如下:与目标机上的debug引擎进行通讯动态模块下载和卸载常驻主机的目标机符号表在目标机上为主机上的工具分配内存缓存目标机代码text段支持虚拟IOTarget server增强了主机和目标机之间的灵活性,使得主机工具对目标机的影响最小,主机工具与主机和目标机之间的通信方式互相独立,所有的Tornado工具均使用WindRiver Tool Exchange协议(缩写为WTX)与target server通信。
WTX协议具体内容参见Tornado API指南。
Target server通过下列方式响应工具的WTX请求:操作缓存中的信息发送请求到目标机上的WDB agent中Wtxregd在启动target server和工具之前要先启动wtxregd。
Tornado工具、registry和target server可以运行在不同主机上,Tornado registry程序必须运行在指定的主机上。
windows下为Tools=>Options...=>Tornado Registry页面中指定的主机,tornado 工具与目标机通过target server(tgtsvr)进行交互,target server提供: 网络、串口、NetROM或者用户自定义连接上的通信常驻主机的目标机符号表动态模块下载和卸载缓存目标机RAM中程序的text段在target上创建虚拟IO路径Wind Registry程序wtxregd负责管理tornado工具与target server之间连接所需的各种信息。
tornado工具首先与registry进行交互,获取target server的相关信息。
WDB代理WDB调试代理运行在目标机上,与target server进行交互,执行命令并返回结果。
WDB代理位于target server和Tornado工具之间,可以完成以下功能: 读取或修改内存设置或清除断点创建、启动、停止或删除任务调用函数收集系统目标信息通常WDB代理作为一个任务运行在目标机上,因此获得最佳性能。
但这种情况下只能进行任务级调试。
也叫做task或internal模式。
通常我们可以看到在任务中有twdbTask 这个任务(如图1所示)。
图 1由于WDB代理不依赖于VxWorks,所以也能够执行系统级调试--例如:调试中断服务程序或内核运行起来之前的代码。
将WDB代理与VxWorks分开运行才能进行系统调试。
也叫做external或system模式。
WDB代理做为一个组件,如果要使用交叉调试,则需要在bootConfig.c中配置将其添加进来(如图所示)。
默认的vxworks映像中定义了WDB 代理,并开启了WDB代理支持。
所有目标机代理相关的模块均位于/development tool components/WDB agent components/.下。
几乎所有目标机的默认配置为:包含系统级和任务级两种调试方式,采用END方式进行通信。
在系统开始多任务切换之前进行调试,需要设置为单一系统级调试模式,要调试中断服务程序,则必须选择external agent模式。
既选择任务模式又选择系统模式,vxworks将创建external和task两种WDB代理。
当进入或退出系统调试时,代理会自动切换。
图 2target server与WDB代理之间的通信遵守WindDebug(WDB)协议, WDB 代理使用目标机内存来满足上位机工具的请求,例如:下载目标代码,创建变量,生成任务或运行命令。
由于代理使用单独的内存区域,使得Tornado工具对目标机的影响降到最小。
主机-目标机通信方式如图3所示:图 3所有的工具均连接到主机上的target server,target server负责处理与WDB agent 之间的通信细节,Tornado支持TCP/IP,串口和NetROM等连接方式。
通过串口线进行调试时,请使用最高可靠性的数据传输。
速率。
2. 配置:我们在日常开发中调试最常用的任务级调试,目前用的比较多的也是通过网口连接到目标机上进行交叉调试。
通过tornado提供的工具,我们可以很方便访问vxworks shell、进行单步deug、查看内存中的变量。
下面具体描述通过网口通信方式的搭建步骤:环境:tornado 2.2.1源码文件(编译elf的源代码)本地编译后生成的elf文件(与目标机此时加载的image是一样的,否则会提示校验和不对)配置target server:a)从开始菜单中选择tools->target Server->config.(图4所示)图 4b)出现界面如下:Description:主要是针对该服务器的描述。
Target Server:填本地机IP地址。
Target Ip Address:目标机IP地址。
Target Server properti:BackEnd:有几中连接方式,通过网口通讯则选择wdprpc,通过串口则选择wdbserial,一般我们常用的是网口,选择wdbrpc.(图5所示)图 5Core File and Symbols:填写elf文件的路径比如:E:\V1.02_Build090921\phonex\bin\IP2007\appsip.elf根据个人需要选择Global symbo或者ALL symbo. (图6所示)图 6Memory Cache Size:表示在目标机上分配的内存。
默认为1024K,如果提示内存不足的话,可以将这一项改大一些。
c)配置完成后选择launch, 如果加载成功target server就会提示如下,(targetserver 会在电脑的右下脚有红色小图标的提示):(图7所示)图7如果提示如下:(图8所示)图8这是由于网络连接错误而引起,这是应该检查,主机是否与目标机正常连接。
如果提示如下:(图9所示)图9这是由于目标机运行的image与本地的image不符所造成的。
主界面中选中目标机,运行目标机的shell,输入i, 可以正常查看目标机的任务状态,这表示target server正常运行,下面就可以利用tornado的工具来进行调试。
可以通过远程的shell来执行所需要的命令。
(图10)图103. 调试:目前tornado一次只能支持一个目标机进行debugg.如果想要进行多个目标机同时调试,则需要开多个tornado。
3.1. 运行调试工具:选中目标机,运行调试工具:Tools ->debugger或者点击红色蚂蚁的标志。
(图11所示)图113.2. 选择源文件的路径:Debug->debugger Source Search Path,选择源代码的路径(图12所示)图123.3. 交叉调试Tornado调试是目前有支持任务级调试与系统级调试。
日常开发中用的较多的一般是任务级的调试,所以调试时需要关联到某个任务。
打开所需要调试的源文件。
例如我在Kbd.c中kpdCallback这个函数中设置断点(F9),(图13所示)图13由于这个函数实际上关联到KPD_CALLBACK这个任务,选择Attach这个任务。
(图14所示)图14kpdCallback主要负责处理键盘事件,电话上按键之后程序就会运行到我们所设置的断点,然后就可以进行调试。
(图15所示)图15step into(F10):单步调试。
遇到函数时,会进入函数中。
(图16 所示)step over(F11):单步调试。
遇到函数时,不进入函数中。
step out(shift+F11):跳出函数。
Variables:可以查看当前函数中局部变量。
Memory:可以查看内存中的变量Watch:查看当前变量中的值。
(图17所示)图174. 小结Tornado提供的工具除了调试以外,我们还可以通过borwser方便直观的看到内存与CPU使用情况,堆栈情况,任务统计信息(SPY)等。