程序崩溃时该如何调试

程序崩溃时该如何调试

Q:程序崩溃时该如何调试

首先确定编译应用程序所选择的编译工具架构,和实际硬件架构是否一致。
可以使用 Crash Trap 调试, SylixOS 自 v1.9.9 内核版本后开始支持 crashtrap 命令,此命令可在程序崩溃时将进程切换到 STOP 模式,方便用户进入 Attach 调试。

更多扩展知识见:
使用方式详见《RealEvo-IDE 使用手册第5章 RealEvo-IDE调试,5.8 Crash Trap调试
或者《SylixOS 开发禁(限)用说明》




    • Related Articles

    • 应用程序崩溃,没有输出任何信息,如何定位?

      Q:应用程序崩溃,但没有输出任何信息,如何定位呢? 1,考虑是否栈溢出或者函数调用栈被破坏。 2,如何验证是否是栈溢出导致的呢? 在 SylixOS 上可以通过Shell 命令 调大调用栈。 //比如通过如下命令,将栈调大一倍,默认栈大小是65535shstack 120000 也有可能是栈变量等被改写,这就需要结合代码进行分析。 在嵌入式系统中,函数中最好不要定义太大的局部变量,这很容易导致栈溢出,并浪费很多时间来定位无明显提示信息的程序 Crash。 更多扩展知识见: ...
    • SylixOS调试不支持数据断点

      Q:调试的时候 attach 到进程,立马死掉,或者调试的时候出现很多诡异现象。 解决方法: 先叫用户在 IDE 下面检查是断点设置情况,或者直接清空断点,然后再链接,看下调试功能是否就好了,如果好了,说明之前可能出现无意中触发设置数据断点的功能了。
    • RealEvo-IDE 使用串口调试 App

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。   硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: ...
    • RealEvo-IDE 串口调试 app 补充说明

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。 硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: 设备名/dev/ttyS5,对应于面板 ...
    • 使用 GDB 命令行调试 SylixOS 应用程序

      一、简介 SylixOS 在内核中内置了一个标准的 GDB Server。使用 GDB 调试,只有两个步骤: 在 SylixOS 上启动 GDB Server; 使用交叉编译工具链中的 GDB 应用程序连接到 SylixOS 上的 GDB Server。 两个步骤完成后,便可以使用 GDB 进行调试了 注:SylixOS 的 GDB 不支持 Watch 变量的功能,因为 Stub 不支持数据断点。 二、前提条件 1. 断开硬件调试工具 GDB 依靠 CPU ...