程序运行coredump却没有core文件生成
时间: 2023-11-16 21:06:18 浏览: 58
出现这种情况可能是因为 core dump 文件的大小超过了系统限制。你可以通过以下命令查看系统 core dump 的大小限制:
```
ulimit -c
```
如果输出为 0,则表示不允许生成 core dump 文件。你可以通过以下命令将 core dump 文件的大小限制设置为无限制:
```
ulimit -c unlimited
```
然后再运行程序,如果程序崩溃了,应该会生成 core dump 文件。如果还是没有生成,可以尝试检查程序是否运行在 chroot 环境中,以及是否有权限在当前目录下生成文件等问题。
相关问题
如何强制设备生成coredump文件
要生成coredump文件,可以按照以下步骤进行:
1. 确认系统是否启用了coredump功能,可以使用以下命令查看:
```
ulimit -a
```
如果输出中的`core file size`不为`0`,则表示系统已经启用了coredump功能。
2. 如果系统没有启用coredump功能,可以使用以下命令来启用:
```
ulimit -c unlimited
```
该命令会将coredump文件大小设置为无限制。
3. 如果需要在程序崩溃时生成coredump文件,可以使用以下命令启动程序:
```
ulimit -c unlimited && ./your_program
```
该命令会将coredump文件大小设置为无限制,并启动程序。
4. 如果程序已经在运行,但是没有生成coredump文件,可以使用以下命令来向进程发送SIGQUIT信号:
```
kill -SIGQUIT pid
```
其中,`pid`是进程的ID。发送SIGQUIT信号后,程序会生成coredump文件。
请注意,生成coredump文件可能会泄露敏感信息,因此应该谨慎使用。
gdb生成coredump文件
使用gdb生成coredump文件的步骤如下:
1. 编译可执行文件时,需要加上-g选项以让编译器在可执行文件中包含符号表信息。
2. 运行可执行文件,在程序出错时,gdb会自动中断程序并进入调试模式。
3. 在gdb中输入命令"generate-core-file"或缩写"gcore" ,生成coredump文件。
4. 可以通过命令"quit"退出gdb调试模式。
需要注意的是,coredump文件可能会包含敏感信息,应该妥善保管。