Related Articles
程序崩溃时该如何调试
Q:程序崩溃时该如何调试 首先确定编译应用程序所选择的编译工具架构,和实际硬件架构是否一致。 可以使用 Crash Trap 调试, SylixOS 自 v1.9.9 内核版本后开始支持 crashtrap 命令,此命令可在程序崩溃时将进程切换到 STOP 模式,方便用户进入 Attach 调试。 更多扩展知识见: 使用方式详见《RealEvo-IDE 使用手册》第5章 RealEvo-IDE调试,5.8 Crash Trap调试 或者《SylixOS 开发禁(限)用说明》 ...
应用程序崩溃,没有输出任何信息,如何定位?
Q:应用程序崩溃,但没有输出任何信息,如何定位呢? 1,考虑是否栈溢出或者函数调用栈被破坏。 2,如何验证是否是栈溢出导致的呢? 在 SylixOS 上可以通过Shell 命令 调大调用栈。 //比如通过如下命令,将栈调大一倍,默认栈大小是65535shstack 120000 也有可能是栈变量等被改写,这就需要结合代码进行分析。 在嵌入式系统中,函数中最好不要定义太大的局部变量,这很容易导致栈溢出,并浪费很多时间来定位无明显提示信息的程序 Crash。 更多扩展知识见: ...
开发中常见故障类型
Q:开发中常见故障类型 在开发过程中经常出现的故障类型主要包括如下几种: 1、栈溢出 2、空指针访问 3、内存泄漏 4、数组越界 5、系统资源泄漏 6、死锁 7、优先级反转 8、位扩展和除零等错误 9、Bus Error 10、Not Found Symbol 11、使用for循环延时被优化 以上故障原因经常出现在开发或排故过程中,其解决方法可参考如下方案: 更多扩展知识见: 可以使用 Crash Trap 调试,使用方式详见《RealEvo-IDE 使用手册》第5章 ...
非对齐访问导致程序崩溃的规避方法
Q:运行 app,运行中崩溃的原因及规避方法 经过查验是发现崩溃在了访问非对齐内存上 解决方式:选择 release 模式编译,以及添加一个局部变量传入库函数中,最后再将局部变量赋值给非对齐的内存 文章部分截图 app运行崩溃原因,在 linux 上运行现象,以及解决办法见附件 更多扩展知识见: 参考文章:SylixOS 开发禁(限)用有哪些注意事项
IDE 中对程序崩溃有没有记录出错现场trace?
问:IDE中对程序崩溃有没有记录出错现场trace? 答:暂无! RealEvo-IDE 支持死锁检测,旗舰版 IDE 设备管理中可进行查看。如线程出现死锁状态,在 Thread Pending 页面中呈现红色状态,并以黄色标记因等待信号量被阻塞的线程。 或者在终端中使用 cdump 指令显示或保存崩溃转储消息。 该命令有3种用法,不加参数用来显示崩溃消息 参数-s:将崩溃转储消息保存到/var/log/cdump 参数-c:显示或保存后清除消息