Search code examples
linuxdebugginggdbcoredump

How to print the last received signal in GDB?


when loading a core dump into GDB the reason why it crashed automatically is displayed. For example

Program terminated with signal 11, Segmentation fault.

Is there any way to get the information again? The thing is, that I'm writing a script which needs this information. But if the signal is only available after loading the core dump amd I can't access the information later on.

Is there really no command for such an important feature?


Solution

  • If you know what the core file name is, you can issue the target core command which respecifies the target core file:

    (gdb) target core core.8577
    [New LWP 8577]
    Core was generated by `./fault'.
    Program terminated with signal 11, Segmentation fault.
    #0  0x080483d5 in main () at fault.c:10
    10      *ptr = '\123';
    (gdb) 
    

    As for the implied question, what is the info last signal command?, I don't know. There does not seem to be one.


    The core file's name can be obtained from the command info target:

    (gdb) info target
    Symbols from "/home/wally/.bin/fault".
    Local core dump file:
        `/home/wally/.bin/core.8577', file type elf32-i386.
        0x00da1000 - 0x00da2000 is load1
        0x08048000 - 0x08049000 is load2
    ...
        0xbfe8d000 - 0xbfeaf000 is load14
    Local exec file:
        `/home/wally/.bin/fault', file type elf32-i386.
        Entry point: 0x8048300
        0x08048134 - 0x08048147 is .interp
        0x08048148 - 0x08048168 is .note.ABI-tag
        0x08048168 - 0x0804818c is .note.gnu.build-id
        0x0804818c - 0x080481ac is .gnu.hash
        0x080481ac - 0x080481fc is .dynsym
        0x080481fc - 0x08048246 is .dynstr
    ...