一、前置条件
1、 设置ulimit参数
确保用户或者进程的ulimit参数(核心转储文件大小限制)允许生成core dump文件。使用`ulimit -c unlimited`来设置无限制,或者指定一个合适的大小。
ulimit -c unlimited
2、检查coredump文件路径
确保‘/proc/sys/kernel/core_pattern’文件中定义了core dump文件的生成路径和文件名格式。
cat /proc/sys/kernel/core_pattern
二、kill命令生成(方式1)
手动发送一个SIGSEGV信号给进程。
kill -SEGV <进程ID>
三、gdb生成(方式2 成功)
1、确保gdb调试器已经安装在系统上。
2、启动程序,确保它在运行中。
3、打开另一个终端窗口,运行gdb调试器。在命令行中输入以下命令:
gdb <程序名>
4、gdb调试器会附加到你的程序上并暂停它的执行。现在,使用以下命令来设置断点:
break <函数名> 或 break <行号>
其中<函数名>
是你想要设置断点的函数名称,或者<行号>
是你想要设置断点的行号。
5、设置好断点后,使用“run”命令恢复程序的执行,程序将继续执行到达刚设置的断点处。
6、使用gdb的kill
命令来发送信号给程序,使其崩溃。
signal 11
7、core_pattern查询到的路径下生成core文件。