我把vxworks移植到了VMWARE的虚拟机上,编程时有两个问题想了解一下
1.我编译的VXWORKS内核是包含了target shell组件和一个host与target符号表同步的组件的,在TORNADO编好程序后download到虚拟机中,为什么在tornado的命令行下能运行程序中的函数,而在虚拟机中的vxworks命令行下运行同样的函数却提示undefined symbol?
2.在tornado的命令行下执行某个函数时,为什么有的包含printf语句的函数会打印在tornado的命令行下,而有的函数会打印在虚拟机中的vxworks中?我看不出它们的区别在哪.让printf打印在哪里靠什么控制?
1.
Tornado操作界面->Tools->Target server->Configure...
此处配置target server时,Target server property对应的下拉框中
Core file and symbol system选项下
有个Synchronize Target/Host Symbol Table需要勾上
不推荐同步主机和目标机的符号表,貌似有问题
2.
如果没有重定向的话,printf都是打印到target shell下,即你说的虚拟机上的
printf语句都是打印到标准输出,看你定向到哪个位置就打印到哪个位置了
1. 符号表同步貌似只能是target shell下载后,能够在host shell下更新,当host shell下载的话,target shell是无法更新的。
2. host shell下执行某一个函数的时候,WDB会自动生成一个新的任务来运行,这个任务的IO将被重定向到host shell上。这样,你在host shell下敲某一个函数的时候,printf的内容就直接打到host shell上了。
假设这个函数里有生成新的任务的代码,这样里面生成的任务还是独立的,printf默认就打到标准IO,即界面上去了。
如果在host shell下,你调用的是-> sp 函数, 这样你会发现全都打标准IO上去了。
学习中,知识就是点滴的积累,感谢前辈的回答!!!!!!!!!!!!!
2、
输出到目标
->?shConfig SH_GET_TASK_IO off
输出到windshell
->?shConfig SH_GET_TASK_IO on