我是vxworks的新手,正在使用vxworks(PowerPC处理器(开发基于c++的嵌入式项目。我面临的问题是,我的应用程序有时(很少(会崩溃,我无法识别崩溃的位置,因为tera终端上没有打印任何内容(使用tera术语控制台应用程序的ld<App.out
命令从主机加载可执行文件(。我在互联网上没有得到关于在vxworks中调试的有用资源。有人能建议如何识别vxworks中崩溃发生的痕迹吗。
对调试有用的两个命令是i
和tt
。
i
简单地打印出任务列表及其名称和状态。它可用于查找哪些任务失败。
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)
value = 0 = 0x0
有关tt
的更多信息,请访问dbgLib。i
命令在usrLib
中有描述,但我在网上找不到它的手册。其来源可在此处获得,其中列出为:
- i[task]任务的TCB摘要
要做的一项重要工作是:确保使用选项VX_FP_task创建了任何运行C++代码的任务。这可以解释";崩溃";在极少数情况下。