【FAQ】全志R329如何进行coredump的配置与调试?
- 
					
					
					
					
 问题背景 应用调试时出现段错误的情况。 程序运行过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做CoreDump。 可以认为CoreDump是内存快照,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时记录下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。CoreDump对于调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而CoreDump文件可以再现程序出错时的情景。 问题描述 客户基于btmanager开发蓝牙应用或者调试其他应用时,有时候会遇到崩溃的问题。 
 只看到应用退出了,然后留下一行Segmentation fault的错误,却没有其他更多的信息。
 比如:问题分析 报错只有 Segmentation fault,而不是Segmentation fault (core dumped),说明没有使用CoreDump。 解决办法 SDK配置coredump和gdb 
 m menuconfig进入配置菜单(1)Global build settings —> [*] Enable process core dump support 
  (2)Global build settings —> Binary stripping method (none) —> 
  (3)Development —> <*> gdb… GNU Debugger 
  小机端配置 
 (1)ulimit -c unlimited
 表示在异常时产生core dump文件,不对core dump文件的大小进行限制。
 (2)echo /tmp/coredump > /proc/sys/kernel/core_pattern
 设置产生的core文件的文件名以及路径。例如: 
  出现Segmentation fault 之后,会有(core dumped)的字样。 对coredump的简单debug (1)使用gdb调试coredump文件。 
 gdb xxxx /tmp/coredump
 xxxx是具体的应用程序,比如/usr/bin/bt_test(2)在gdb 终端中输入bt 
 输入bt之后,可以查看堆栈的信息。注意:这里的bt不是蓝牙的意思。如下图所示: 
  
 这样就可以大致查看出错的点,方便分析调试。
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
- 
				Referenced by q1215200171 q1215200171
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号