资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,tornado调试培训,提 纲,shell,tornado,,Tornado调试概述,crossWind tornado debugger,browser,windShtornado shell,WindView,crossWind,Tornado调试概述,crossWind tornado debugger,browser,windShtornado shell,WindView,crossWind调试器,重要步骤:,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了,crossWind调试器,重要步骤,2、Debug-Source search path 中加上你要调试的原代码的路径。,crossWind调试器常用功能,breakPoint:设置断点,当任务执行到本断点后会stop,前提是我们设置了 auto attach to task,在没有设置此选项的情况下,必须手工attach 到某一任务。有全局断点和任务断点,Step:单步功能,跟其他调试环境类似。,Watch:设置watch 变量。,Variable:变量查看,主要是当前被调试的函数的局部变量和全局变量。,注意:Watch Variable和显示的变量值可能会不对,最好去和内存中去确认,或者看存放器或者打印。arm,Registers:查看存放器当前值。,Memory:查看内存值。,crossWind调试器常用功能,Back trace:栈回溯,通过栈回溯,可以看到函数的调用关系,针对每一个栈帧,可以查看调用时各个函数的执行环境,包括参数、存放器等。,Attach:attach到某一运行任务,attach之后,整个任务便在调试器的控制之下。,Run:创立一个任务,并执行,调试器会自动attach到这个任务。,Diassemble:反汇编能力,可以和c语言同时对应显示,crossWind调试器,常见问题:,1、如果在taskSpawn的时候选项中设置了 VX_UNBREAKABLE,那么就不能设置断点调试。,2、如果翻开了优化开关,O2那么无法单步调试,代码和汇编对不上。,3、编译时没有使用g编译开关。会无法设置断点,4、断点位置不准确,和代码对不上,可能是由于链接的不是该原代码文件,或者代码和target server的版本有差异,browser,Tornado调试概述,crossWind tornado debugger,browser,windShtornado shell,WindView,Browser堆栈,1、观察stack信息,可以观察当前stack使用量,可以观察最大stack的使用量,注意:,如果在taskSpawn的时候选项中设置了 VX_NO_STACK_FILL,那么就无法观察stack的使用量。,在shell中用checkStack也可以观察stack的使用,Browserspy,Spy :,观察cpu占有率。,当感觉系统运行很慢时,可以用spy观察哪些任务占cpu太多时间了。,注:,有的tornado显示用不了spy,那么可能要把spyLib.o 这个文件copy到lib/objppc603gnuvx目录下。,Browser其它,任务信息,i,ti,内存信息,memShow,Module 信息,windShtornado shell,Tornado调试概述,crossWind tornado debugger,browser,windShtornado shell,WindView,Windsh任务信息,i,所有任务的名字,入口函数,tid,优先权,当前pc,sp,错误号等,注意:如果显示中任务名为空,那么很有可能发生了越栈现象。tid就是tcb块开始的地址,可以通过这个地址观察和修改里面的内容,ti 参数为任务名或tid,显示任务tcb块的完整信息。通常关注信息是:,堆栈的信息栈头,栈尾,最大使用栈的大小,存放器spppc里的r1的值,pc的值,函数参数值ppc的r3,r4,r5,fp如ppc的r31,Windsh任务信息,sp 函数名,参数值,发起一个新的任务,任务名为t1,t2.,ts,挂起一个任务,,tr,让任务继续运行,td,删除一个任务,Windsh任务信息,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中不能使用。,Windsh内存相关,d,地址,显示的单元数,宽度1,2,4,8,显示内存,m 地址,宽度,修改内存,MemShow 1,显示内存的使用信息,如后参数1那么显示详细的free memory信息,memShow,memShow 1,FREE LIST:,num addr size-,1 0 x3fee18 16,2 0 x3b1434 20,3 0 x4d188 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比较推断破坏在哪个地方。,Windsh和代码相关,l,反汇编,由于static的函数名没有包含进符号表,所以不能完全看出代码是哪个具体的函数,,要想准确知道,可以在tornado 的debug中用反汇编或者用objdumpppc d,lkAddr,观察该地址离哪些符号函数名,全局变量名比较近。,lkup,观察变量的地址,注:符号表是通过symTbl.c链接进来的,只包含了全局信息。,Windsh和调试相关,b 设置和显示断点,b就是显示断点,b 地址设置断点,bd 删除断点,bd 地址,bdall 删除所有断点,bh 设置硬件断点,如:PPC860就可以,PPC604就可以设置读写内存的断点。,Windsh其它,devs 显示系统所有设备,可以找出对应的串口号。,semShow 显示信号量的信息,WindView,Tornado调试概述,crossWind tornado debugger,browser,windShtornado shell,WindView,windView,观察和分析任务执行信息的图型工具。,不常用,谢 谢,
展开阅读全文