珠海h5模板建站,电子工程网络通信的专业课,iis7.5搭建网站,建设局电话965559一些前置知识
原文链接#xff1a;https://blog.csdn.net/tenfyguo/article/details/8159176
一、什么是coredump 我们经常听到大家说到程序core掉了#xff0c;需要定位解决#xff0c;这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止https://blog.csdn.net/tenfyguo/article/details/8159176
一、什么是coredump 我们经常听到大家说到程序core掉了需要定位解决这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止并且在满足一定条件下这里为什么说需要满足一定的条件呢下面会分析会产生一个叫做core的文件。 通常情况下core文件会包含了程序运行时的内存寄存器状态堆栈指针内存管理信息还有各种函数调用堆栈信息等我们可以理解为是程序工作当前状态存储生成第一个文件许多的程序出错的时候都会产生一个core文件通过工具分析这个文件我们可以定位到程序异常退出的时候对应的堆栈调用等信息找出问题所在并进行及时解决。 二、coredump文件的存储位置 core文件默认的存储位置与对应的可执行程序在同一目录下文件名是core大家可以通过下面的命令看到core文件的存在位置 cat /proc/sys/kernel/core_pattern 缺省值是core
三、快速获取调用通路
在需要产生coredump的位置加入会引起程序崩溃的代码比如
int*pNULL;
int a*p;
在执行程序前执行命令
sudo echo /var/crash/coredumps/core.%e.%p.%t/proc/sys/kernel/core_pattern
ulimit -c unlimited
执行代码程序会崩溃退出此时的coredump存储在/var/crash/coredumps下
执行gdb查看coredump文件
# gdb 可执行文件 coredump文件
# 比如
gdb /data/app /var/crash/coredumps/core.23342.435454
进入gdb后等待输入框出现执行bt查看堆栈情况即可查看函数调用通路
#0 0x000002434ff in Func at /data/app/fun.cpp……………………#28 0x28282882828 in main at /data/app/main.cpp
#0是发生coredump的函数#28最后一个是执行入口一般是main函数。