没有工作台的VxWorks调试

时间:2016-01-28 09:17:13

标签: debugging gdb remote-debugging vxworks

是否可以在没有Workbench with GDB或其他免费调试器的情况下调试VxWorks任务? 在线查看只报告gdb(目标vxworks ID)的旧命令不再起作用;此外,在VxWorks 5.3推出之后,WDB协议似乎从未被移植到gdb中,除了在vetust版本上的一个暂定版本和仅用于PowerPc平台(我需要调试x86 VxWorks 6.9)

3 个答案:

答案 0 :(得分:2)

尝试-> VxWorks目标外壳上的dbgHelp,它显示交互式外壳调试命令。

答案 1 :(得分:0)

Wind River当然鼓励使用Workbench进行检查式调试(这是有道理的,因为它需要Wind River许可证),但似乎有一些方法可以使用GDB进行一些配置来调试VxWorks中的任务。 见old GDB VxWorks manual。现在这本手册是从2002开始的,所以我想很多东西都不是最新的,但希望这可以帮助你(当然现代版本的VxWorks为本文档中详述的方法提供了传统支持)。

正如您可能知道的那样,VxWorks支持基本的基于打印的调试样式,可以通过printf()或logLib的高级logMsg()函数执行。

答案 2 :(得分:0)

我不知道它是什么版本,但是很多年前,我正是为使用VxWorks的FRC机器人创建了gdb2wdb。自从FRC迁移到基于Linux的系统以来,代码一直没有得到维护,但是我认为没有理由不应该对常量和gopher字符串进行一些调整,以减少FRC的特定性。

GDB2WDB是类似于gdbserver进程的Ruby脚本,因为您在本地计算机上运行gdb2wdb并将其指向vxworks框,然后通过target remote :2345将gdb指向gdb2wdb。

如果内存可以正确使用,则可以使用2.0.1之后的任何版本的ruby(或1.7之后的jruby)运行它,如下所示:

ruby -I lib bin/gdb2wdb [your-arguments-here]

查看--help参数,并注意以下FRC特定的术语和布局:

  • cRIO-上面装有VxWorks的控制器的名称。基于PowerPC
  • FRC_UserProgram.out-FRC机器人代码在其中上传的内核模块
  • FRC_UserProgram_StartupLibraryInit-FRC机械手代码的入口点
  • FRC_RobotTask-FRC机器人代码的主线程
  • powerpc-wrs-vxworks-用于FRC机器人代码的库存GCC三元组

还要确保链接器设置(在lib / elf_utils.rb中)适用,并且WdbGopherStrings中的GOPHER命令(来自lib / wdb / wdb.rb)可能需要调整各种版本的偏移量/地址。 vxWorks和x86。它们可以是synthesized from the C headers(第160-167页),也可以来自现有Workbench调试器会话的Wireshark捕获。

重要说明:gdb2wdb是相当不错的东西,许多功能不受支持,但是我记得当时我实现了足够的能力以能够使用普通的Eclipse CDT + gdb,因此对于简单的情况就足够了。 / p>