“🙉🙉🙉 ”
背景是人类首张黑洞照片,纪念一下,确实很震撼!!!
linux 调试core文件
core文件是应用程序崩溃那瞬间的现场,包括一些栈信息,异常信息等。为我们了解崩溃现场发生了啥,好修复它。
打开core dump功能
-
ulimit -c
查看,若是0,表示未开启可以用以下命令临时开启ulimit -c unlimited
-
永久开启方式
/etc/security/limits.conf
,按照以下方式修改liangjf@ubuntu:~/study/learn_gdb$ cat /etc/security/limits.conf # /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> * soft core unlimited
使core文件加上进程pid
echo 1 >> /proc/sys/kernel/core_uses_pid
修改core文件的生成路径和名字
echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_patter
%e:可执行文件名字。%p:pid。%t:时间戳
例子
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>
#define CORE_SIZE 1024 * 1024 * 500
int SetCoreFile()
{
struct rlimit rlmt;
rlmt.rlim_cur = (rlim_t)CORE_SIZE;
rlmt.rlim_max = (rlim_t)CORE_SIZE;
if (setrlimit(RLIMIT_CORE, &rlmt) == -1)
return -1;
}
int fun1()
{
/*访问非法内存,产生core文件*/
int *ptr = NULL;
*ptr = 10;
return 0;
}
void fun2()
{
fun1();
}
void fun3()
{
fun2();
printf("fun3\n");
}
int main(int argc, char *argv[])
{
SetCoreFile();
fun3();
return 0;
}