《ornado调试技巧》PPT课件.ppt_第1页
《ornado调试技巧》PPT课件.ppt_第2页
《ornado调试技巧》PPT课件.ppt_第3页
《ornado调试技巧》PPT课件.ppt_第4页
《ornado调试技巧》PPT课件.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

tornado调试培训 提纲 shelltornado Tornado调试概述crossWind tornadodebugger browserwindSh tornadoshell WindView crossWind Tornado调试概述crossWind tornadodebugger browserwindSh tornadoshell WindView crossWind调试器 重要步骤 1 配置tools targetserver configa 在targetname ipaddress中输入目标板子的ip地址 b 在backend处选上wdprpc 如果网络不好 可以在timeout中输入2sc 在corefileandsymbols的文件中选上需要调试的vxWorks或vxWorks std memorycacheSize设置为10000 e 这样就可以启动这个targetserver了 crossWind调试器 重要步骤2 Debug Sourcesearchpath中加上你要调试的原代码的路径 crossWind调试器 常用功能 breakPoint 设置断点 当任务执行到本断点后会stop 前提是我们设置了autoattachtotask 在没有设置此选项的情况下 必须手工attach到某一任务 有全局断点和任务断点Step 单步功能 跟其他调试环境类似 Watch 设置watch变量 Variable 变量查看 主要是当前被调试的函数的局部变量和全局变量 注意 WatchVariable和显示的变量值可能会不对 最好去和内存中去确认 或者看寄存器或者打印 arm Registers 查看寄存器当前值 Memory 查看内存值 crossWind调试器 常用功能 Backtrace 栈回溯 通过栈回溯 可以看到函数的调用关系 针对每一个栈帧 可以查看调用时各个函数的执行环境 包括参数 寄存器等 Attach attach到某一运行任务 attach之后 整个任务便在调试器的控制之下 Run 创建一个任务 并执行 调试器会自动attach到这个任务 Diassemble 反汇编能力 可以和c语言同时对应显示 crossWind调试器 常见问题 1 如果在taskSpawn的时候选项中设置了VX UNBREAKABLE 那么就不能设置断点调试 2 如果打开了优化开关 O2那么无法单步调试 代码和汇编对不上 3 编译时没有使用 g编译开关 会无法设置断点4 断点位置不准确 和代码对不上 可能是由于链接的不是该原代码文件 或者代码和targetserver的版本有差异 browser Tornado调试概述crossWind tornadodebugger browserwindSh tornadoshell WindView Browser 堆栈 1 察看stack信息可以察看当前stack使用量可以察看最大stack的使用量注意 如果在taskSpawn的时候选项中设置了VX NO STACK FILL 那么就无法察看stack的使用量 在shell中用checkStack也可以察看stack的使用 Browser spy Spy 察看cpu占有率 当感觉系统运行很慢时 可以用spy察看哪些任务占cpu太多时间了 注 有的tornado显示用不了spy 那么可能要把spyLib o这个文件copy到lib objppc603gnuvx目录下 Browser 其它 任务信息i ti内存信息memShowModule信息 windSh tornadoshell Tornado调试概述crossWind tornadodebugger browserwindSh tornadoshell WindView Windsh 任务信息 i所有任务的名字 入口函数 tid 优先权 当前pc sp 错误号等注意 如果显示中任务名为空 则很有可能发生了越栈现象 tid就是tcb块开始的地址 可以通过这个地址察看和修改里面的内容ti 参数为任务名或tid 显示任务tcb块的完整信息 通常关注信息是 堆栈的信息 栈头 栈尾 最大使用栈的大小 寄存器 sp ppc里的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地址 宽度修改内存MemShow1显示内存的使用信息 如后参数1则显示详细的freememory信息 memShow memShow1FREELIST numaddrsize 10 x3fee181620 x3b14342030 x4d1882909400SUMMARY statusbytesblocksavgblockmaxblock Currentfree290943639698122909400alloc9690601610260 Cumulativealloc11433401636569 如果内存链表给破坏了 可以通过和正常的freelist比较推断破坏在哪个地方 Windsh 和代码相关 l反汇编 由于static的函数名没有包含进符号表 所以不能完全看出代码是哪个具体的函数 要想准确知道 可以在tornado的debug中用反汇编或者用objdumpppc dlkAddr察看该地址离哪些符号 函数名 全局变量名 比较近 lkup察看变量的地址注 符号表是通过symTbl c链接进来的 只包含了全局信息 Windsh 和调试相关 b设置和显示断点b就是显示断点 b地址 设置断点bd删除断点bd地址bdall删除所有断点bh设置硬件断点如 PPC860就可以 PPC604就可以设置读写内存的断点 Windsh 其它 dev

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论