Embedded 版 (精华区)
发信人: wanily (醉了酒的老鼠), 信区: Embedded
标 题: VxWorks使用说明书(5)(zz)
发信站: 哈工大紫丁香 (2003年05月29日12:15:30 星期四), 站内信件
VxWorks使用说明书(5) <--- 〖回复该帖子〗
9、系统调试模式下程序的调试
Tornado集成环境提供两种调试模式:任务调试模式和系统调试模式。在任务调试模式下
,在一个集成环境下一个时间内只能调试一个任务。调试只影响当前被调试的任务,其
它任务正常运行。在系统调试模式下,可以同时调试多个任务、中断服务程序(ISR),
调试影响整个系统。
Tornado1.0集成环境下,在系统模式下进行程序调试,主机与目标机之间必须使用串口
通信。Tornado2.0集成环境提供了通过网口进行系统模式调试的功能。
系统缺省使用网口通信,如果需要使用串口通信,需要修改文件C: \ Tornado \ targe
t \ config
} all \ configAll.h的一些宏定义,修改为:
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*使用串口通信*/
#define WDB_TTY_CHANNEL 0 /*使用第
一个串口*/
#define WDB_TTY_BAUD 38400 /*波特率
:38400bps*/
重新编译链接vxWorks。
在启动目标服务器时,要选择串口通信,并进行相应配置。
9.1 系统调试模式下多任务的调试:
调试使用的源代码与任务调试模式中使用的代码相同。但是,需要去掉为了能够在任务
调试模式下进行多任务调试的MultiTaskTestTaskA和MultiTaskTestTaskB中的语句task
Suspend(0);。
多任务调试步骤:
* 用-g选项编译源代码产生目标文件。
* 下载产生的目标文件。
* 在MultiTaskTestInit函数的开始设置断点。
* 在Debugger命令窗口输入命令attach system进入系统调试模式。
* 在Shell窗口输入命令sp MultiTaskTestInit产生一个以MultiTaskTestInit为入口函
数的任务,因为整个系统都停下了,新产生的任务还没有执行,这可以通过在Debugger
命令窗口输入命令info threads显示当前系统中的任务列表看出来。
* 执行菜单命令Debug | Continue继续运行程序。
* 系统在设置的断点处停下。
* 在函数MultiTaskTestTaskA中的语句msgQReceive(g_MsgQ2id,cMsgFromTaskB, 100,W
AIT_FOREVER)的下一条语句处设置断点。
* 在函数MultiTaskTestTaskB中的语句msgQReceive(g_MsgQ1id,cMsgFromTaskA, 100,W
AIT_FOREVER)的下一条语句处设置断点。
* 执行菜单命令Debug | Continue继续运行程序。
* 程序在任务MultiTaskTestTaskB中的断点处停下(为什么不是在任务MultiTaskTestT
askA中停下?请考虑)。
* 执行菜单命令Debug | Continue继续运行程序。
* 程序在任务MultiTaskTestTaskA中的断点处停下。
* 执行菜单命令Debug | Continue继续运行程序。
* 程序又一次在任务MultiTaskTestTaskA中的断点处停下(为什么停两次?请考虑)。
* 执行菜单命令Debug | Continue继续运行程序。
* 程序在任务MultiTaskTestTaskB中的断点处停下。
9.2 中断服务程序的调试
中断服务程序只能在系统调试模式下调试,不能在任务调试模式下调试。因为中断服务
程序是作为系统的一部分运行,不是以任务方式运行,因此不需要为它产生任务。
中断服务程序调试步骤:
* 用-g选项编译源代码产生目标文件。
* 下载产生的目标文件。
* 在MultiTaskTestInit函数的开始设置断点。
* 在Debugger命令窗口输入命令attach system进入系统调试模式。
* 执行菜单命令Debug | Continue继续运行程序。
* 如果产生相应的中断,程序就会在中断服务程序的断点处停下。进行需要的调试。
------------------------全文完-----------------------------
--
醉了酒的老鼠想吃猫
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.226.4]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.601毫秒