您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Windows下模拟调试方法
Tornado使用入门(PC仿真)创建工程...........................................................................................................................1添加文件...........................................................................................................................4生成目标文件...................................................................................................................8目标文件生成后,就可以启动仿真器进行程序调试了:.........................................10下载.out目标文件到仿真环境中..................................................................................12命令行shell....................................................................................................................14Debug的使用.................................................................................................................15配合debug使用的几种调试手段.................................................................................16TornadoII是开发和调试VxWorks系统不可缺少的组成部分,是交叉开发环境运行在主机上的部分,它集成了编辑器、编译器和调试器。开发系统包含三个高度集成的部分:VxWorks:运行在目标机上的高性能实时操作系统。Tornado开发环境:运行在宿主机上,包括一组强有力的交叉开发工具。连接宿主机和目标机的多种通信方式:以太网、串口线、仿真器等。下面先就当前主要使用的PC仿真环境讲解Tornado的入门级使用方法(限于个人水平,所以只能就我所了解的部分进行初步的讲解):PC仿真环境目前我们所使用的基本上都是PC仿真环境,即在PC机Windows上模拟VxWorks操作系统的环境,它允许开发者在没有BSP、操作系统配置和目标机硬件的情况下快速开发。具体步骤如下:创建工程打开Tornado,选择File-NewProject…,创建一个download工程填入自定义的工程名和目录:由于是仿真环境,所以选择SIMNTgnu创建工程:点击Finish之后创建工程成功。添加文件添加各自模块所需要的.c源文件到工程中(此时是看不到工程头文件的):添加完所有源文件后,需要建立源文件到头文件的依赖关系,以最终生成目标文件。首先点击Build栏设定工程头文件路径:比如你的头文件路径为:“D:/bakup/vxworks/ngn/include”,则需键入空格键后再输入-ID:/bakup/vxworks/ngn/include,如下图:确定后回到Files栏。生成所有源文件到头文件的依赖关系:生成依赖关系以后就可以在workspace中看到所有的工程头文件了。生成目标文件Build窗口中会显示build进度以及发现的warning和error,发现error会自动停止,双击错误提示可以直接跳到该处:解决所有error编译成功后提示如下:目标文件生成后,就可以启动仿真器进行程序调试了:点击工具栏上的Vx图标确定后会出现仿真窗口继续OK启动仿真器。下载.out目标文件到仿真环境中如果工程中有的文件使用了没有定义的函数等就会出现以下提示:正常情况下download成功不会出现任何提示窗口。程序的调试主要是shell和debug.命令行shell点击图标:就可以启动WindShell了:理论上这里可以直接使用命令行的方式调用工程中几乎所有的函数,但是并不提倡大家这么作,因为一般来说你的函数中可能都会传递各种各样的参数,比如指针等,这时如果通过命令行来传递指针显然不是聪明人的做法。那么聪明人的做法是怎么样的呢?建议自己写一个测试函数,比如我自己测试消息处理的函数就命名为_ULONG32msgtest(_VOID),然后将自己要测试的整个流程封装在msgtest这个函数中,那么直接在命令行方式下敲入msgtest就可以实现所有的测试流程。另外,建议在自己封装的测试函数中尽量多的打印一些调试信息,这样会有助于错误的定位。另外,一般来说,在测试自己的程序之前应该先对OS进行初始化,方法很简单,在命令行方式下直接执行root就可以了。程序中通过print打印的信息会出现在shell窗口或者仿真器窗口中。Shell是个功能非常强大的工具,它支持的系统命令可以使用help命令来查看,其中比较常用的有:i:查看当前运行的所有任务及其状态td:删除某个任务ts,tr:阻塞或是唤醒某个任务d:显示内存内容b:设置断点具体的使用方法大家可以自己看help,很简单。Debug的使用Debug无疑是Tornado下面最重要的调试手段,点击图标启动debug,成功后可以点击图标,出现以下窗口在其中填入你想要调试的函数以及传给它的参数,也建议使用上面的封装策略。Breakatentry是在函数的入口处设置断点。点击OK等待出现调试窗口后就可以开始进行调试程序了:配合debug使用的几种调试手段breakpoint、stepinto、stepover、stepout、continue等与其它开发工具类似,比较简单。另外可以直接在要查看的变量上面点击鼠标右键,选择addtowatch到watch窗口中查看变量的内容以及取值的变化,也与VC差不多。点击shell按钮前面的lauchbrowser按钮进入browser窗口,在这里可以看到当前内存的使用情况、所有的任务以及每个任务堆栈的变化等。browser中还可以看到当前工程的符号表,不过我现在也看不懂:(还有其它一些调试手段,比如c代码和汇编代码混合调试、观察寄存器、观察内存等等可能大家暂时用不到,我就先不讲了,以后有机会可以慢慢摸索,乐趣也就在这里。大家调试程序需要注意的几点:1.各自模块单独调试的时候需要加入OS以及所有与自己有直接联系的模块的代码2.PID的使用。各模块单独调试的时候可以自己手动在os_pid.h中加入自己以及与自己相关的PID,在m_astPidCfgCB数组中按照标准范例填写必要的信息,并且在该数组上面按照标准范例填写这些PID的初始化函数和消息处理函数的原型声明(保证这些函数都由定义的情况下),这样才能完成操作系统的正常初始化以及模块间消息的传递。3.在PC仿真环境下执行程序必须将os_config.h中的__PC_SIM__宏置为1,__FLEX_HAMMER24__和__PC_WIN32__均置为0。
本文标题:Windows下模拟调试方法
链接地址:https://www.777doc.com/doc-2867625 .html