问题描述
我是 vxworks 的新手,正在使用 vxworks(PowerPC 处理器)开发基于 C++ 的嵌入式项目。我面临的问题是我的应用程序有时(很少)崩溃并且我无法确定崩溃的位置,因为在 tera 终端上没有打印任何内容(使用 {{1} 从主机加载可执行文件} 来自 Tera term 控制台应用程序的命令)。我没有在互联网上获得有关在 vxworks 中调试的有用资源。有人可以提出一些方法来识别 vxworks 中发生崩溃的位置。
解决方法
两个对调试有用的命令是 i
和 tt
。
i
简单地打印出带有名称和状态的任务列表。它可用于查找失败的任务。
tt
显示任务的堆栈跟踪。
手册中的示例:
-> tt "logTask"
3ab92 _vxTaskEntry +10 : _logTask (0,0)
ee6e _logTask +12 : _read (5,3f8a10,20)
d460 _read +10 : _iosRead (5,20)
e234 _iosRead +9c : _pipeRead (3fce1c,20)
23978 _pipeRead +24 : _semTake (3f8b78)
value = 0 = 0x0
有关 tt
的更多信息,请访问 dbgLib。 i
命令在 usrLib
中有描述,但是我在网上找不到它的手册。其来源可在 here 处获得,其中列出为:
- i [task] 任务的 TCB 摘要
要做的一项重要工作:确保已使用选项 VX_FP_TASK 创建了任何运行 C++ 代码的任务。 这可以解释极少数情况下的“崩溃”。