GDB creating a core file

11,562

Solution 1

From the gdb command prompt with your executable loaded, issue the generate-core-file command.

Solution 2

Load your program in gdb, set a breakpoint, run to the break point and then

(gdb) generate-core-file

Solution 3

If you can change the program adding a call to abort() will generate a core dump in many unix environments.

You need to make sure that you have core files enabled. The most common reason for core files not being generated is a zero size core ulimit. Check with the command ulimit -c and reset if zero with ulimit -c unlimited.

If you don't want to change the program you can send an abort signal with the kill command: kill -SIGABRT <pid> but with such a short program you are probably going to have to used a script and even then you may not be able to get the signal in before the process exits.

With bash you can try something like this (assuming that your program is called a.out and is in the current directory):

./a.out & kill -SIGABRT $!

& says run this in the background and $! is the PID of the most recently executed background command.

Share:
11,562
Admin
Author by

Admin

Updated on June 23, 2022

Comments

  • Admin
    Admin almost 2 years

    Alright so don't ask why, but I want to create a core file of a test program I made. It's not corrupted and it doesn't screw up, but I want to generate a core file of it. Heres the code:

    #include <stdio.h>
    int main(){
    printf("TEST");
    }
    

    As I said its really simple, but I want to be able to dump a core of it. How can I do it? BTW I'm on Ubuntu 10.04

  • Michael Burr
    Michael Burr over 13 years
    +1, but should note that this isn't supported on Windows (at least without Cygwin) for whatever reason.
  • Raphael Bossek
    Raphael Bossek over 13 years
    (-1) Is it possible that the application exit before the SIGABRT signal is send? You would need a sleep() or scanf() to wait for.
  • CB Bailey
    CB Bailey over 13 years
    @Raphael B.: Yes, this is what I said: "even then you may not be able to get the signal in before the process exits". I'm not sure I understand your (-1) explanation?
  • jww
    jww over 4 years
    Ugh... GCC 6.6 on OpenBSD: Undefined command: "generate-core-file". Try "help".
  • jww
    jww over 4 years
    Ugh... GCC 6.6 on OpenBSD: Undefined command: "generate-core-file". Try "help".