如果系统出现了异常,如何处理?

如果系统出现了异常,如何处理?

Q:如果系统出现了异常,如何处理?
使用以下几个 shell 命令快速定位是否为系统问题:
“ps” 查看 kernel 线程是否正常;
“tp”  查看有无死锁;
“ints”  查看中断;
“top” 查看 cpu 的使用情况;
“ss”  查看当前堆栈情况(达到临界值时会报警,溢出时会造成系统崩溃)
若程序运行时设备直接重启
检查 /etc/startup.sh 脚本中是否设置了 “shstack 120000” 语句,检查 shell 任务线程栈空间大小
查看系统/应用程序状态,有如下几种:
  • leakchk、leakchkstart、leakchkstop:内存泄漏检查。
  • free:      显示系统当前的内存信息。
  • ss:          查看线程和中断堆栈的使用情况(达到临界值时会报警,溢出时会造成系统崩溃)。
  • ts:          查看线程。
  • ps:          查看进程 kernel 线程是否正常。
  • tp:          查看挂起的线程。
  • top:        查看 cpu 的使用情况。
  • ints:       查看系统中断向量表信息。
  • mems:    查看系统内核内存堆与系统内存堆使用情况。
  • loglevel: 显示或设置当前内核日志打印等级。
  • shstack: 显示或者设置shell任务堆栈大小。
  • netstat:  查看网络状态。
  • aborts:   显示当前操作系统异常处理统计信息。

具体命令的使用可以参考《SylixOS shell用户手册》, 查看某个具体命令的帮助方法为 help [cmd]。

更多扩展知识见:
《SylixOS用户手册-shell命令手册



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

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

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

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