查看assert信息: 1、 可以通过工程模式查看last exception 步骤:工程指令(*#65289*#)->Debug Info->Last Exception 2、通过catcher查看 步骤:连接catcher -> Advanced -> Retrieve Exception 内存转储(memory dump)分析是调试嵌入式系统或移动设备时常用的一种技术,它可以帮助开发者定位系统崩溃、异常或性能问题的原因。在本文中,我们将探讨如何使用内存转储进行分析,以及如何在特定情况下获取和处理内存转储。 我们需要查看assert信息以了解异常发生的情况。有两个主要途径: 1. **通过工程模式查看last exception**: - 输入工程指令(*#65289*#)进入工程模式。 - 在工程模式下,选择Debug Info,然后点击Last Exception来查看最近发生的异常信息。 2. **通过Catcher工具查看**: - 连接Catcher工具。 - 在Catcher的Advanced选项中选择Retrieve Exception,获取异常详情。 接下来,我们详细介绍如何抓取并分析memory dump: 1. **开启memory dump**: - 进入工程模式,选择Misc.,然后找到Memory dump选项,将其设置为On。 - 提请注意,这个开关默认关闭,并且在每次开机时会恢复到默认状态。因此,每次需要抓取内存转储时,都需要手动开启。 2. **编译项目**: - 打开项目的makefile,确保`CUSTOM_CFLAGS`设置为`-g -gtp`。这将启用调试信息的生成,这对于分析内存转储至关重要。 3. **下载二进制文件**: - 对工程执行新的编译操作,然后下载二进制文件。 - 确保提供的ELF文件与内存转储对应,是同一编译过程中生成的,并且包含调试信息(通过-g标志)。 4. **配置Catcher**: - 使用Catcher工具,将filter设置为Field Trial。 - 复现问题,等待异常发生。 5. **捕获内存转储**: - 当异常发生时,选择Advanced > Memory Dump(在Catcher V3.10.10之前的版本中是Download DebugInfo)。 - 点击Start按钮开始内存转储。系统应该显示错误类型,但不会立即重启。 6. **保存日志**: - 内存转储完成后,不要关闭Catcher或断开手机与PC的连接。在Catcher中保存Log(File > Save As)。 7. **收集所需文件**: - 收集生成的`.bin`(内存转储文件)、`.clg`(Catcher日志文件)以及`\build\<project>\*.elf`(对应的ELF文件)发送给我们进行分析。 如果无法通过工程模式打开memory dump开关,可以在代码中手动设置。在`application_initialize`之前声明`kal_uint32 INT_MemoryDumpFlag`,并在`mainp`调用的上一行添加`INT_MemoryDumpFlag = 0x26409001;`。 如果遇到问题,如无法抓取内存转储,应检查以下方面: 1. 确认已经开启了memory dump开关,可以通过Catcher的Sys trace来确认。 2. 更新下载线驱动程序,特别是Prolific或FTDI的驱动,确保使用最新版本。 3. 如果下载线不稳定或出现Catcher错误日志,尝试更换下载线,或者按照以下步骤操作。 memory dump分析方法是解决设备异常的关键手段。通过正确地捕获和分析内存转储,我们可以定位问题的根源,从而进行有效的故障排查和修复。务必确保在编译时启用调试信息,并在异常发生时正确记录和传递相关信息。
- woaigengxiaoning2012-10-16骗子,只有介绍怎么保存memorydump,一点都没有和怎么分析联系上
- li_xing_ping2013-06-28确实是骗子,一点用都没有
- ho2xing2015-03-09保存,都会呀, 为什么没有分析 内存错误的
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助