产生core dump文件的两种方法

本文详细介绍如何在程序出现异常时生成CoreDump文件,包括通过异常信号和gcore命令两种方法,并解释了CoreDump文件的作用及如何使用gdb工具进行分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于应用错误,如浮点异常、段错误,操作系统转入内核的异常处理,向对应的进程发送特定的信号(如SIGSEGV)。如果进程中没有对这些信号进行处理,就会转入默认的处理,产生coredump文件就是其中一种。coredump文件其实就是内存的映像,即进程执行时的内存的所有内容。

很多系统默认情况下,产生coredump文件的开关是关闭的。下面介绍2种产生coredump文件的方法。
1、通过异常信号产生coredump文件
默认情况下,如果coredump开关开启,进程收到以下异常信号会产生coredump文件。信号:
3)SIGQUIT 4)SIGILL 6)SIGABRT 8)SIGFPE 11)SIGSEGV 7)SIGBUS 31)SIGSYS 5)SIGTRAP 24)SIGXCPU 25)SIGXFSZ 29)SIGIO
使用ulimit -a命令可查看coredump文件开关是否开启。如下图,如果core file size选项值不为0,则表示开关开启:
在这里插入图片描述
如果core file size值为0,可以使用ulimit -c SIZE/unlimited命令开启coredump。其中SIZE表示coredump文件的大小限制,unlimited表示无限制。

需要注意的是,ulimit命令只对同一个session有效。即使是同一个账号,在不同的session下开启core dump,也不会有效。另外,在同一个session下,需要先开启core dump,再运行程序,才能产生core dump。

在程序未接受到以上信号的情况下,如果要强制产生core dump文件,可以使用kill -signal PROCESS_ID或者killall -signal PROCESS_NAME向进程发送信号。注意,这样做,会让进程异常退出。

很多时候,部署到线上的程序出现问题需要定位,如果程序并未异常退出,为了不影响业务的正常运行,需要在程序运行时产生coredump文件做分析,可以使用下面的方法。
2、使用gcore命令产生coredump文件
获取运行进程的ID,然后执行gcore PROCESS_ID命令可以产生coredump文件。

coredump文件产生后,可以使用gdb工具对coredump文件做进一步分析。命令如下:
gdb PROCESS_NAME core_file。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值