百度
360搜索
搜狗搜索

怎么让linux程序产生core文件详细介绍

在 Linux 系统中,要让程序产生 core 文件(核心转储文件),可以按照以下步骤操作:

1. 启用 core 文件生成

首先需要确保系统允许生成 core 文件。可以通过以下命令设置:
bash

  unlimited

这个命令会将当前 shell session 的 core 文件大小限制设置为无限制。若要使设置永久生效,需编辑/etc/security/limits.conf文件,添加如下内容:
plaintext

<username> hard core unlimited

<username> soft core unlimited

其中,<username>代表用户名,若要让所有用户都生效,可使用*

2. 配置 core 文件保存位置和命名格式(可选)

可以通过修改/proc/sys/kernel/core_pattern文件来设定 core 文件的保存位置与命名格式。例如,执行下面的命令让 core 文件保存在当前目录,并且文件名包含程序名、PID 等信息:
bash

     /proc/sys/kernel/core_pattern

常见的格式说明符如下:

  • %e:程序文件名
  • %p:进程 ID
  • %t:时间戳
  • %h:主机名

若想让设置永久生效,要编辑/etc/sysctl.conf文件,添加或者修改这一行:
plaintext

kernel.core_pattern = %e.core.%p

之后执行sudo sysctl -p使设置生效。

3. 触发程序崩溃

让程序崩溃从而生成 core 文件的方法有很多,下面是一些常见的方式:

示例程序(会引发段错误)

c

 

ptr

ptr

将上述代码保存为test.c,然后编译并运行:
bash

gcc  test.c    

./test

程序运行后会崩溃,若前面的设置都正确,就会在当前目录生成类似test.core.12345的文件。

4. 分析 core 文件

可以使用 GDB 来分析生成的 core 文件:
bash

gdb ./test test.core.12345

进入 GDB 后,使用bt命令就能查看程序崩溃时的调用栈:
plaintext

(gdb) bt

常见问题及解决办法

  • core 文件没有生成
    • 检查ulimit -c的输出,若不是unlimited,可执行ulimit -c unlimited
    • 查看是否有足够的磁盘空间。
    • 确认程序是否有写入文件的权限。

  • core 文件被生成到了其他目录
    • 检查/proc/sys/kernel/core_pattern的设置。
    • 查看是否存在 apport 等系统服务拦截了 core 文件。

通过上述步骤,你就能在 Linux 系统中让程序产生 core 文件,并利用这些文件进行调试分析。

阅读更多 >>>  linux怎么查找两个内容

网站数据信息

"怎么让linux程序产生core文件"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:怎么让linux程序产生core文件的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!