Ubuntu22.04设置程序崩溃产生Core文件
文章目录
- Ubuntu22.04设置程序崩溃产生Core文件
- 摘要
- Ubuntu 生成Core文件配置
- 1. 检查 core 文件大小限制
- 2. 设置 core 文件大小限制
- 3. 配置 core 文件命名和存储路径
- 4. 重启系统或重新加载配置
- 5. 测试配置
关键字:
Ubuntu
、
Core
、
Crash
、
崩溃
、
程序
摘要
最近程序总是崩溃,解决又毫无头绪,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 文件,以便于调试和分析程序崩溃的原因。