13

I have a C++ program that does what it is supposed to do, but there must be some problem with pointer, since it crashes at the end and creates a core dump. My problem is that I cannot find the core file, so I cannot debug it.

I have tried

ulimit -c unlimited
ulimit -a

and now the dimension of the file is set to unlimited, but still I cannot find the core. I have tried in every folder written here but still it seems that no core file is created.

Where can I find it?

  • Current directory, or /var/crash – waltinator Oct 19 '17 at 20:37
  • 4
    While true in most cases, @waltinator , it is sometimes necessary to check /var/log/apport.log, because modern Ubuntu versions use Apport, which can interfere with core-dumping in non-obvious ways. See stackoverflow.com/a/18368068/1772379 for more info. – Ben Johnson May 11 '18 at 15:13
12

In Ubuntu the core dumps are handled by Apport and can be located in /var/crash/. But it is disabled by default in stable releases.

To enable Apport, run: sudo systemctl enable apport.service or sudo service apport start.


To disable, run: sudo systemctl disable apport.service or sudo service apport stop in order to back to regular core dumping method. See: How do I enable or disable Apport?.

To disable permanently, edit /etc/apport/crashdb.conf file and comment the following line:

'problem_types': ['Bug', 'Package'],

by adding a hash symbol (#) in the beginning of the line.

To disable crash reporting (back to normal), remove the hash symbol (the same as it was).


You can also check core_pattern, how core dumps are handled by the kernel:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

So even core files are disabled by ulimit, apport will still capture the crash.

See also:

2

For those googlin': ( in my case -- Ubuntu 16.04 and 18.04 and a custom app ) /var/crash was still empty, so a quick way to handle core creation ( provided that you are e.g. using a relevant ulimit builtin setting ) was

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

and

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


Sources:

  • Simple, straightforward, worked. – Taekahn Oct 15 '19 at 18:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.