附件 26
技 术 文 件
技术文件名称:VxWorks 的调试手段
技术文件编号:
版
本:3.0
共 页
(包括封面)
拟 制
审 核
会 签
标准化
批 准
VxWorks 的调试手段
文件编号
版本号
修改记录
拟制/修
改日期
拟制人/
修改人
更改理由
主要更改内容
(写要点即可)
注 1:每次更改归档文件(指归档到事业部或公司档案室的文件)时,需填写此表。
注 2:文件第一次归档时,“更改理由”、“主要更改内容”栏写“无”。
第 1 页 共 38 页
VxWorks 的调试手段
目 录
1
TORNADO 的调试工具................................................................................................................. 4
1.2
1.3
1.4
1.5
1.1
1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.2.7
WINDSHELL.............................................................................................................................. 4
简介 ............................................................................................................................ 4
功能键........................................................................................................................ 5
特殊控制符................................................................................................................ 6
计算功能 .................................................................................................................... 6
环境变量 .................................................................................................................... 6
内置指令 .................................................................................................................... 6
BROWSE................................................................................................................................17
内存查看 .................................................................................................................. 18
模块信息 .................................................................................................................. 18
堆栈使用率.............................................................................................................. 18
CPU 占有率............................................................................................................. 19
任务信息 .................................................................................................................. 20
中断向量表.............................................................................................................. 20
实体查看 .................................................................................................................. 20
DEBUGGER.............................................................................................................................. 21
条件断点 .................................................................................................................. 21
代码显示 .................................................................................................................. 21
TARGET SERVER...................................................................................................................... 22
使用串口调试 .......................................................................................................... 22
重定向...................................................................................................................... 22
WINDVIEW..............................................................................................................................22
记录层次 .................................................................................................................. 22
记录数据存储方式 ..................................................................................................23
传送方式 .................................................................................................................. 23
数据分析 .................................................................................................................. 23
TRIGGER..................................................................................................................................24
1.6
1.7
TELNET.................................................................................................................................... 25
1.8 调试模式................................................................................................................................ 25
任务调试模式下的多任务调试..............................................................................27
系统调试模式下多任务的调试: ..........................................................................28
中断服务程序的调试..............................................................................................28
1.8.1
1.8.2
1.8.3
1.3.1
1.3.2
1.4.1
1.4.2
1.5.1
1.5.2
1.5.3
1.5.4
2
V2 支撑的调试手段.......................................................................................................................29
2.1 各模块提供的函数................................................................................................................ 29
2.2 如何查看 ERROR.LOG 文件.................................................................................................... 30
定位到具体的出错行..............................................................................................31
2.2.1
3
V3 支撑的调试手段.......................................................................................................................31
1.1. 进程调试................................................................................................................................ 31
1.2. 查看所有进程信息:OSS_DBGGETALLUSEPCBINFO........................................................ 32
第 2 页 共 38 页
VxWorks 的调试手段
1.3. 查看当前运行的进程信息.................................................................................................... 32
1.3.1. 进程断点设置:b.................................................................................................... 32
1.3.2. 当前进程运行信息:OSS_DbgGetCurPCBInfo................................................... 32
1.3.3. 当前进程的消息信息:OSS_DbgGetCurMsgInfo................................................32
1.3.4. 进程断点取消:bd..................................................................................................32
1.3.5. 恢复进程运行:tr....................................................................................................32
1.4. 内存观察................................................................................................................................ 33
1.4.1. 消息队列堆积、阻塞观察:tw..............................................................................33
1.4.2. 任务消息队列观察:OSS_DbgShowQueueCtl .....................................................33
1.4.3. 任务 UB 使用观察:OSS_DbgShowTaskUB ........................................................34
1.4.4. 进程使用 UB 情况:OSS_DbgShowProcUBInfo................................................. 35
1.4.5.
UB 的配置和当前状态:OSS_DbgMemUbUsePrn/ OSS_DbgShowUbPool......35
1.5. 通信和定时器状态观察........................................................................................................ 35
1.5.1. 通信状态显示 OSS_DbgShowComm .....................................................................35
1.5.2. 测试板间通信是否正常:OSS_DbgRudpPing..................................................... 36
1.5.3. 单板上定时器的使用信息:OSS_DbgGetTimerInfo........................................... 36
1.5.4. 单板进程使用定时器的信息:OSS_DbgGetTimerInfoOfProc............................36
1.6. 杂项观察................................................................................................................................ 36
1.6.1. 异常发生后信息观察:OSS_DbgShowExcInfo......................................................36
1.6.2. 堆栈使用率/运行时间统计:zte...........................................................................36
1.6.3. 进程最近打印内容观察:ztecall/ ztemsg........................................................37
1.6.4. 进程最近打印的 1K 内容和打印时间:zteprint...............................................37
第 3 页 共 38 页
VxWorks 的调试手段
VxWorks 下的调试手段
主要介绍在 Tornado 集成开发环境下的调试方法,和利用支撑定位问题的步骤、思路。
1 Tornado 的调试工具
嵌入式实时操作系统 VxWorks 和集成开发环境 Tornado 的组成结构如下图 1。分为主机
和目标机系统。
图 1 集成开发环境结构图
在 Tornado 下,调试相关操作在 Debug 菜单下,包括:
图 2 Debug 菜单
简单解释各菜单项的功能
1.1 WindShell
1.1.1 简介
Vxworks 的 Shell 分为两种:host shell 和 target shell;
Tornado 提供的 WindShell 建立了 2 者间的一个桥梁, 从宿主机到目标机之间的一个命
令 shell。WindSh 是一种非常受欢迎的开发工具,它具有很强的交互性和可操作性,允许
第 4 页 共 38 页
VxWorks 的调试手段
用户调用内存中的应用程序模块或是 VxWorks 模块中的任何例程。它不但具有一般命令语
言的功能,而且也具有 C 语言的设计特点,能够解释几乎任何 C 语言表达式, 执行大多
数 C 语言算子,解析符号表数据。对初用者来说,WindSh 学习起来比较简单,使用比较方
便,对熟练用户而言,则有较为高级的手段可以应用。
WindSh 是一个驻留在主机内的 C 语言解释器,通过它可运行下载到目标机上的所有函
数,包括 VxWorks 系统调用和应用函数。Tornado 外壳还能解释常规的工具命令语言 TCL。
WindSh 不仅可以解释几乎所有的 C 语言表达式,而且可以实现所有的调试功能。它主
要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除
断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;
查看任务列表、内存使用情况、CPU 利用率;查看特定的对象(任务、信号量、消息队列、
内存分区、类);复位目标机等。
1.1.2 功能键
Tab
补齐剩余部分
Ctrl+D
显示与之匹配的所有符号
-> CurM^D
_CurMaster
_CurModule
补齐剩余部分:
->CurMo^D
->CurModule
显示命令摘要
->moduleShow ^D
moduleShow() - show the current status for all the loaded modules
(WindSh)
STATUS moduleShow
(
char * moduleNameOrId /* name or ID of the module to show */
)
Ctrl+W
键入完整的命令后,继续键入空格 + [Ctrl+W]。将会显示 html 页帮助信息.
Ctrl+H
删除一字符
Ctrl+U
删除一行
CTRL+C
重起 shell
CTRL+X
Reboot
CTRL+S
临时挂起输出
CTRL+Q
恢复挂起
Esc
第 5 页 共 38 页
VxWorks 的调试手段
在输入和编辑模式间切换
输入类似 Vi 编辑命令, 如[Esc + k]:显示前一次输入的命令
h←j↓k↑l→
h()设置命令缓冲区长度。->h 500
1.1.3 特殊控制符
?
@
>
<
行
C 和 TCL 模式转换符号, 在 c 模式下敲?进入 tcl 模式, 在 tcl 下敲?则进入 c 模式;
在 target 还是在 host 上运行, 在指令前加上@则在 target 上运行, 否则在 host 上运
指令输出重定向
指令输入重定向
1.1.4 计算功能
数据转换:键入整数或字符后回车可以显示该整数的十进制及十六进制值。也可以键入
字符常量或符号地址。
比如:
->0x54+64
value = 148 = 0x94
->x = (8 * 6) / 4
x = 0x20ff378: value = 12 = 0xc
-> Nom = “Nelson”
new symbol “Nom” added to symbol table.
Nom = 0x23fe798: value = 37742496 = 0x23fe7a0 =
Nom + 0x8
1.1.5 环境变量
使用 ?shConfig 命令修改环境变量:
SH_GET_TASK_IO
为调用函数设置 I/O 重定向。ON:重定向到 WindSh;OFF:I/O 显示到目标机控制台。
LD_PATH
为模块设置搜索路径,用“;”隔开。 例如:ld 命令提交后,Shell 搜寻模块的
路径顺序为:首先在当前目录,然后到 LD_PATH 设置的路径。
LD_SEND_MODULES
设置 load 模式。
以下 3 个用不到
LD_CALL_XTORS
LD_COMMON_MATCH_ALL
DSM_HEX_MOD
1.1.6 内置指令
1.1.6.1 所有内置指令
tcl> set shellProcList
第 6 页 共 38 页
VxWorks 的调试手段
intVecShow iStrict
b bh bd bdall c cret e s so sysResume sysSuspend d l ld lkAddr lkup m mRegs unld
agentMode Show browse checkStack classShow devs i
iosDevShow
iosDrvShow iosFdShow memPartShow memShow moduleIdFigure moduleShow mqPxShow
mqShow msgQShow rBuffShow semPxSho w semShow show smMemPartShow smMemShow
sysStatusShow taskShow trgShow version wdShow sp sp s taskIdDefault taskIdFigure td ti tr ts tt
bootChange cd h help ls period printErrno prin tLogo pwd quit reboot repeat shellHistory
shellPromptSet
cplusDtors wvHostInfoShow
evtBufferToFile hostShow icmpstatShow ifShow inetstatShow ipstatShow routestatShow
taskCreateHookShow taskDeleteHookShow taskSwitchHookShow taskRegs Show tw w
taskWaitShow tcpstatShow tftpInfoShow udpstatShow
cplusStratShow cplus Ctors
cplusXtorSet
1.1.6.2 任务管理
sp
用缺省参数创建一个任务(priority=100 返回值为任务 ID,或错误),立刻返回。任
务的 I/O 不被重定向到 shell。
如果直接敲例程名,回车,执行完才返回。I/O 被重定向。
sps
tr
ts
td
与上者不同在于启动该任务后马上将其挂起
恢复一个挂起的任务
挂起一个任务
删除一个任务
period
创建一个周期调用函数的任务
period 5 testPrn 每隔 5 秒调用 testPrn,易于做调试打印。
repeat
创建一个重复调用函数的任务
repeat 10 testFunc1 连续执行 10 次 testFunc1 函数,易于做测试用。
mRegs
修改任务的寄存器变量。比较有用的是修改 pc 值,使程序退回到具体位置再运行。
程序位置可以使用 shift+F7(混合汇编方式显示代码)
-> mRegs "pc", s1u0
pc
: 0499efd7 - 0x499efd1
1.1.6.3 任务状态信息
i 显示系统信息:
NAME
ENTRY
TID
PRI
STATUS
PC
SP
ERRNO
DELAY
---------- ------------ -------- --- ---------- -------- -------- ------- -----
tExcTask
0
iStrict 类似于 i,但只查询目标机一次
_excTask
4b7908c
4276be
4b79170
0 PEND
d0003
ti 显示相应任务的 TCB 信息:
第 7 页 共 38 页