1.在arm+linux平台上设置环境,使能coredump相关的命令:
使用 ulimit -c命令当前系统coredump的开关状态:
[root@mi:/]# ulimit -c
0
0说明没有打开,我们将其打开:
#!/bin/sh
ulimit -c unlimited
ulimit -c 0
echo "/mnt/flash/ext/core-%p-%e" > /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_pattern
2.在PC在进行应用程序编译:
引用别人一个测试demo: test.c
#include <stdio.h>
int square(int a, int b)
{
int ret;
int *p = NULL; //此处是会导致coredump处
*p = 666;
return ret;
}
int doCalc(int num1, int num2)
{
int ret = square(num1, num2);
return ret;
}
int main()
{
int param1 = 1;
int param2 = 2;
int result = doCalc(param1, param2);
printf( "result is %d\n", result);
}
# gcc -c -g test.c -o main // 编译时加入debug调试信息
3. 运行应用程序main,让应用程序产生异常:
./main
4.使用gdb进行日志分析:
gdb main core-main-547-1501837727
# (gdb) backtrace // 输入backtrace