Ubuntu22.04设置程序崩溃产生Core文件

发布于:2024-05-30 ⋅ 阅读:(157) ⋅ 点赞:(0)
头图

Ubuntu22.04设置程序崩溃产生Core文件


关键字: UbuntuCoreCrash崩溃程序

摘要

最近程序总是崩溃,解决又毫无头绪,Windows下试尽各种工具都没法定位,只能将代码编译到Linux平台下尝试定位。今天就先研究下如何让程序崩溃是产生Core文件。

Ubuntu 生成Core文件配置

在 Ubuntu 系统中,配置程序崩溃时生成 core 文件通常涉及以下几个步骤:

1. 检查 core 文件大小限制

首先,你需要检查当前系统对 core 文件大小的限制。可以使用 ulimit 命令来查看和修改这个限制。

ulimit -c

如果输出为 0,表示当前没有设置生成 core 文件。

2. 设置 core 文件大小限制

你可以使用 ulimit 命令来设置 core 文件的大小限制。例如,设置为无限制:

ulimit -c unlimited

或者设置一个具体的大小,如 1024 MB:

ulimit -c 1024

注意,ulimit 命令的设置通常只在当前 shell 会话中有效。如果你希望永久生效,需要将设置添加到用户的 shell 配置文件中,如 ~/.bashrc~/.bash_profile

echo "ulimit -c unlimited" >> ~/.bashrc
source ~/.bashrc

3. 配置 core 文件命名和存储路径

默认情况下,core 文件可能会被存储在程序运行的当前目录下,并且命名可能不具有描述性。你可以通过修改 /proc/sys/kernel/core_pattern 来配置 core 文件的命名和存储路径。

例如,将 core 文件存储在 /var/cores/ 目录下,并使用程序名和进程ID来命名:

echo "|/usr/bin/sudo tee /var/cores/core.%e.%p" > /proc/sys/kernel/core_pattern

这里使用了管道符号 | 和一个命令,这个命令会将 core 文件的内容通过管道传递给 sudo tee 命令,从而将 core 文件写入到指定的路径。%e%p 是格式化字符,分别代表程序名和进程ID。

4. 重启系统或重新加载配置

对于某些更改,可能需要重启系统或重新加载配置才能生效。对于 ulimit 的更改,通常只需要重新登录或重新加载 shell 配置文件。对于 /proc/sys/kernel/core_pattern 的更改,可能需要重启系统。

5. 测试配置

为了测试配置是否生效,你可以故意触发一个程序崩溃。例如,编写一个简单的 C 程序,其中包含一个除以零的操作:

#include <stdio.h>

int main() {
    int a = 1;
    int b = 0;
    printf("%d\n", a / b);
    return 0;
}

编译并运行这个程序:

gcc -o crash_test crash_test.c
./crash_test

如果配置正确,你应该会在指定的路径下找到生成的 core 文件。

通过以上步骤,你可以在 Ubuntu 系统中配置程序崩溃时生成 core 文件,以便于调试和分析程序崩溃的原因。


博客签名2021

网站公告

今日签到

点亮在社区的每一天
去签到