RDA CoreDump 实例
UMF进程的Coredump问题追踪: 通河code开机DUMP问题
现象:
开机Dump,原因:_MAINAPP_SW_Init()调用了Factory_Ver_Debug()内存溢出。
分析流程:
1、make menuconfig配置coredump导出功能
2、程序Dump后会在U盘自动产生120MB大小的coredump file(core-b20171111_1153-s4287-MainAppxxx),这个文件就是Debug的GDB文件,用于分析堆栈线程。
3、需要将coredump file与umf.gdb进程文件放在一起运行:
- mipsel-unknown-linux-uclibc-gdb ./aps/application/radisson/atv_project/umf.gdb \
./aps/application/radisson/atv_project/core-b20171111_0933-s4287-MainApp\ Thread-
GDB -> bt情况:
- (gdb) bt
- # _MAINAPP_InitSysApp (dTotalApp=<optimized out>) at main_app_initflow.c:
- # MAINAPP_InitFlow (param=<optimized out>) at main_app_initflow.c:
- # 0x004f17e8 in MAINAPP_MainRoutine (pParam=<optimized out>) at main_app/main_app.c:
- # 0x004f5f68 in thread_thread_handler (argp=0x8e6fd0) at gl_task.c:
- # 0x005666a4 in ?? ()
bt可以标注出线程调用关系及挂机位置,需要注意的是,有时内存越界的挂机不会立即表现出来,但某一个线程栈导致的问题,一般是不会影响到其它线程。所以第一可以判断出问题线程,第二如果内存溢出不能导致线程立即挂起的话,应该在GDB标记挂起的堆栈层次中向前查找问题原因。
4、详细如下:
- project.h
- #define CUSTOMER_SOFTWARE_VERSON "TONGHE_C031FH_1366x768_201711111345"
- #define CONFIG_SUPER_BIN_FILENAME "RR8501_VIP.bin"
- #define CONFIG_SUPER_BIN_FILENAME_ALL "RR8501_ALL.bin"
- #define BUILD_TIME "20171111_134524"
- #define CONFIG_MODEL_BOARD_TYPE_DC
- #define CONFIG_BIN_FILENAME "RR8501_C031FH.bin"
- #define CONFIG_DEFAULT_PWM_REG_MIN 0
- #define CONFIG_DEFAULT_PWM_REG_MAX 522
注意客户版本号定义的字串,在显示客户信息的API ,调用Factory_Ver_Debug()都有引起coreDump。
- void Factory_Ver_Debug(void)
- {
- char tmp_str[]={};//内存越界
- memset(&tmp_str, , *sizeof(char));
- MID_TVFE_GetVersionInfo(MID_TVFE_CusSWVer, tmp_str, sizeof(tmp_str));//越界位置
- printf("[Customer SW Ver.]:%s\n",tmp_str);
- memset(&tmp_str, , *sizeof(char));
- MID_TVFE_GetVersionInfo(MID_TVFE_FlashVer, tmp_str, sizeof(tmp_str));
- printf("[Flash Type]:%s\n",tmp_str);
- memset(&tmp_str, , *sizeof(char));
- MID_TVFE_GetVersionInfo(MID_TVFE_OTAVer, tmp_str, sizeof(tmp_str));
- printf("[OTA version]:%s\n",tmp_str);
- printf("===================================\n");
- printf("End Version\n\n");
- }
使用CoreDump时,要关掉GCC优化,即设置GCC 优化级别为0
RDA CoreDump 实例的更多相关文章
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- Linux下程序崩溃,ulimit,coredump,gdbserver
操作系统:Ubuntu10.04 前言: 在程序崩溃后,如何快速定位问题. 以下方法适用于开发调试阶段,不太适用成品. 本文着眼于嵌入式,PC方面更简单. 核心:gdbserv ...
- (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解 本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...
- Oracle 单实例 Relink Binary Options 说明
一.引入问题 帮朋友在CentOS上安装一个10g的Oracle,结果朋友的CentOS版本是6.2的版本,最新的一个版本,不过Linux上基本都差不多,所以按照以前的步骤,迅速的操作起来,结果遇到N ...
- 多线程操作C++ STL vector出现概率coredump问题及尽量避免锁的双缓冲队列
多线程操作全局变量,必须考虑同步问题,否则可能出现数据不一致, 甚至触发coredump. 前段时间, 遇到一个多线程操作了全局的vector的问题, 程序崩了.场景是这样的:某全局配置参数保存在一 ...
- js-静态、原型、实例属性
本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- EntityFramework Core 1.1是如何创建DbContext实例的呢?
前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...
- redis集成到Springmvc中及使用实例
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...
随机推荐
- buf.values()
buf.values() 返回:{Iterator} 创建并返回一个包含 Buffer 值(字节)的迭代器.当 Buffer 使用 for..of 声明时将自动调用该函数. const buf = B ...
- add list of symbols -- latex
* add list of symbols -- latexinclude a *toc.tex* file in the *main.tex* in *main.tex*#+BEGIN_SRC la ...
- 集训第五周动态规划 H题 回文串统计
Hrdv is interested in a string,especially the palindrome string.So he wants some palindrome string.A ...
- Leetcode 166.分数到小数
分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数. 如果小数部分为循环小数,则将循环的部分括在括号内. 示例 1: 输入: num ...
- Mysql Replace语句的使用
Mysql Replace语句的语法: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] VALUES ({expr ...
- Codeforces870F. Paths
n<=10000000的图,满足:如果(i,j)>1就连一条边权1的无相变,问所有d(u,v) (u<=v)--u到v的最短路之和. 首先1和>n/2的质数都是孤立的点.然后两 ...
- codeforces Educational Codeforces Round 39 (Rated for Div. 2) D
D. Timetable time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
在操作hibernate数据库时,调用saveOrUpdate方法进行更新保存对象时, (1)ID为null时执行SAVE,但是前端jsp通过<input type="hidden&q ...
- MongoDB环境搭建教程收集(待实践)
先收集,后续再实践. https://my.oschina.net/leezhen/blog/207262 http://www.360doc.com/content/11/0708/09/26606 ...