I want to change the default location of core dump files so that every time a core dump is generated ,it goes to that directory.Also, is it possible to save the dump file by the name of the crashed file in this location?
Yes, it is. You can change /proc/sys/kernel/core_pattern
to define the pathname used to generate the corefile. For more, see man core
example:
echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern # `tee' instead of > so that
# opening happens in the
# elevated process
would cause all future core dumps to be generated in /tmp
and be named core_[program].[pid]
Before following the instructions in the accepted answer, it could be good idea to check the contents of /proc/sys/kernel/core_pattern
to see if the Redhat abrt system is in use.
-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
If that is in use, then you already have a pretty extensive scheme for managing core files that you would want to understand before you override it.
In a nutshell, abrt:
- puts the core files here:
/var/spool/abrt/
- has a gui that is started with the command
abrt-gui
- augments the corefile with additional information about the failed process.
- is configure with this file:
/etc/abrt/abrt-action-save-package-data.conf
One common stumbling block with using it is to change this line in the config file:
ProcessUnpackaged = no
Change that to yes to capture core files from your homebrew processes, otherwise it will only capture corefiles from programs installed by the package manager.
[EDIT to answer how to use coredump] To examine a core dump I do this:
cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump
There might be a better way to so that, but gdb has served me well so I have not looked for other ways. Just replace XXXXXXX with the folder that contains your coredump file. The gdb command is cut and paste ready.
References:
来源:https://stackoverflow.com/questions/16048101/changing-location-of-core-dump