VxWorks调试无需Workbench

6

是否有可能使用GDB或其他免费调试器在没有Workbench的情况下调试VxWorks任务? 在线查找只报告了一个旧的gdb命令(目标vxworks ID),但该命令已不再起作用。此外,在引入VxWorks 5.3之后,WDB协议似乎从未被移植到gdb,除了对PowerPc平台上一个陈旧版本的尝试之外,对于我需要调试的x86 VxWorks 6.9并没有可用的。

3个回答

4
尝试在VxWorks目标shell上使用dbgHelp,它会显示交互式shell调试命令。

1
我不知道它是哪个版本,但是很多年前,我为使用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的各个版本的偏移/地址。它们可以从现有Workbench调试器会话的Wireshark捕获中合成(第160-167页)C头文件

重要提示:gdb2wdb非常“hack”,许多功能不受支持,但我记得在实现时已足够使用标准的Eclipse CDT + gdb,因此对于简单情况应该足够。


0

Wind River鼓励使用Workbench进行检查式调试(这是有道理的,因为它需要Wind River许可证),但似乎有一些方法可以通过一些配置来使用GDB调试VxWorks中的任务。 请参阅旧版GDB VxWorks手册。现在,这个手册是2002年的,所以我想很多东西都不是最新的,但希望这可以帮助您(如果当然现代版本的VxWorks为本文档中详细介绍的方法提供遗留支持)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接