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

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

Q:应用程序崩溃,但没有输出任何信息,如何定位呢?

1,考虑是否栈溢出或者函数调用栈被破坏。
2,如何验证是否是栈溢出导致的呢?
在 SylixOS 上可以通过Shell 命令 调大调用栈。

也有可能是栈变量等被改写,这就需要结合代码进行分析。

在嵌入式系统中,函数中最好不要定义太大的局部变量,这很容易导致栈溢出,并浪费很多时间来定位无明显提示信息的程序 Crash。




    • Related Articles

    • 开发中常见故障类型

      Q:开发中常见故障类型 在开发过程中经常出现的故障类型主要包括如下几种: 1、栈溢出 2、空指针访问 3、内存泄漏 4、数组越界 5、系统资源泄漏 6、死锁 7、优先级反转 8、位扩展和除零等错误 9、Bus Error 10、Not Found Symbol  11、使用for循环延时被优化 以上故障原因经常出现在开发或排故过程中,其解决方法可参考如下方案: 更多扩展知识见: 可以使用 Crash Trap 调试,使用方式详见《RealEvo-IDE 使用手册》第5章 ...
    • 程序崩溃时该如何调试

      Q:程序崩溃时该如何调试 首先确定编译应用程序所选择的编译工具架构,和实际硬件架构是否一致。 可以使用 Crash Trap 调试, SylixOS 自 v1.9.9 内核版本后开始支持 crashtrap 命令,此命令可在程序崩溃时将进程切换到 STOP 模式,方便用户进入 Attach 调试。 更多扩展知识见: 使用方式详见《RealEvo-IDE 使用手册》第5章 RealEvo-IDE调试,5.8 Crash Trap调试 或者《SylixOS 开发禁(限)用说明》 ...
    • 如果系统出现了异常,如何处理?

      Q:如果系统出现了异常,如何处理? 使用以下几个 shell 命令快速定位是否为系统问题: “ps” 查看 kernel 线程是否正常; “tp” 查看有无死锁; “ints” 查看中断; “top” 查看 cpu 的使用情况; “ss” 查看当前堆栈情况(达到临界值时会报警,溢出时会造成系统崩溃) 若程序运行时设备直接重启 检查 /etc/startup.sh 脚本中是否设置了 “shstack 120000” 语句,检查 shell 任务线程栈空间大小 查看系统/应用程序状态,有如下几种: ...
    • 系统遇到哪些异常时,会导致系统重启

      Q:系统遇到哪些异常时-会导致系统重启 以 MPSOC 平台为例,在异常中断处理流程中,如果检测到如下错误,那么会系统重启: 1、发现中断点处于内核态,那么会执行重启; 2、如果由系统任务触发中断处理流程,那么会执行重启; 3、如果当前是关键错误,或当前处于中断嵌套状态中时,那么会执行重启;(ESR_EL1 寄存器的 EXC_SERROR_INT 位指示当前是否处于关键错误) 4、当前异常处理流程处于中断嵌套状态时,会执行重启 5、当出现 invalid 异常时,会执行重启;(该 invalid ...
    • FileZilla 上传程序后运行崩溃?

      问:FileZilla Client 传输 APP,SylixOS 端运行此 APP 直接崩溃? 使用 FileZilla Client 传输 APP 到 SylixOS,之后执行 APP,系统崩溃,使用 RealEvo-IDE 传输同样的 APP 不会崩溃? 通过配置 FileZilla Client 传输文件选择使用二进制传输即可解决此问题。                                                  FileZilla Client配置