是否有可能使用GDB或其他免费调试器在没有Workbench的情况下调试VxWorks任务? 在线查找只报告了一个旧的gdb命令(目标vxworks ID),但该命令已不再起作用。此外,在引入VxWorks 5.3之后,WDB协议似乎从未被移植到gdb,除了对PowerPc平台上一个陈旧版本的尝试之外,对于我需要调试的x86 VxWorks 6.9并没有可用的。
是否有可能使用GDB或其他免费调试器在没有Workbench的情况下调试VxWorks任务? 在线查找只报告了一个旧的gdb命令(目标vxworks ID),但该命令已不再起作用。此外,在引入VxWorks 5.3之后,WDB协议似乎从未被移植到gdb,除了对PowerPc平台上一个陈旧版本的尝试之外,对于我需要调试的x86 VxWorks 6.9并没有可用的。
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相关的术语和布局:
还要确保链接器设置(在lib/elf_utils.rb中)适用,并且WdbGopherStrings
中的GOPHER命令(来自lib/wdb/wdb.rb)可能需要调整vxWorks和x86的各个版本的偏移/地址。它们可以从现有Workbench调试器会话的Wireshark捕获中合成(第160-167页)C头文件。
重要提示:gdb2wdb非常“hack”,许多功能不受支持,但我记得在实现时已足够使用标准的Eclipse CDT + gdb,因此对于简单情况应该足够。
Wind River鼓励使用Workbench进行检查式调试(这是有道理的,因为它需要Wind River许可证),但似乎有一些方法可以通过一些配置来使用GDB调试VxWorks中的任务。 请参阅旧版GDB VxWorks手册。现在,这个手册是2002年的,所以我想很多东西都不是最新的,但希望这可以帮助您(如果当然现代版本的VxWorks为本文档中详细介绍的方法提供遗留支持)。
正如您可能已经知道的那样,VxWorks支持基本的基于打印的调试样式,可以通过printf()或logLib中更高级的logMsg()函数执行。