在 vxworks 中打印应用程序崩溃的堆栈跟踪

问题描述

我是 vxworks 的新手,正在使用 vxworks(PowerPC 处理器)开发基于 C++ 的嵌入式项目。我面临的问题是我的应用程序有时(很少)崩溃并且我无法确定崩溃的位置,因为在 tera 终端上没有打印任何内容(使用 {{1} 从主机加载可执行文件} 来自 Tera term 控制台应用程序的命令)。我没有在互联网上获得有关在 vxworks 中调试的有用资源。有人可以提出一些方法来识别 vxworks 中发生崩溃的位置。

解决方法

两个对调试有用的命令是 itt

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 的更多信息,请访问 dbgLibi 命令在 usrLib 中有描述,但是我在网上找不到它的手册。其来源可在 here 处获得,其中列出为:

  • i [task] 任务的 TCB 摘要
,

要做的一项重要工作:确保已使用选项 VX_FP_TASK 创建了任何运行 C++ 代码的任务。 这可以解释极少数情况下的“崩溃”。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...