【问题标题】:print stack trace of application crash in vxworks在 vxworks 中打印应用程序崩溃的堆栈跟踪
【发布时间】:2021-03-31 13:39:50
【问题描述】:

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

【问题讨论】:

    标签: vxworks


    【解决方案1】:

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

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

    • i [task] 任务 TCB 的摘要

    【讨论】:

    • 当应用程序崩溃时,我认为无法检查任务的状态,因为不再可能与同一处理器建立另一个远程连接(通过来自主机的 tera term 控制台)我的应用程序运行以检查任务状态的核心。我必须硬重启我的 vxworks 板。
    【解决方案2】:

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

    【讨论】:

    • 你能告诉我如何指定这个选项吗? Workbench IDE中有没有办法?
    • 是的,当您从 IDE(运行/调试任务)启动任务时,您可以设置该选项。即使在调试时,您也可以更新系统中任何正在运行的任务的任务选项!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多