29
votes

I have installed GDB on Mac OS X and to test that it works I have used this following C program.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

    int *my_array = (int *) malloc(5 * sizeof(int));
    int i;
    for (i = 0; i < 1000000; i++) {
        my_array[i] = i;
    }

    free(my_array);

    return 0;

}

I have an error when compiling it, which is normal (segmentation fault)

However, when adding the -g flag in the compiling command and running gdb on my compiled program, I have this message after launching the command run

During startup program terminated with signal ?, Unknown signal.

Really don't know where it comes from. I have added a certificate to ensure that gdb works correctly on OS X but I have found nothing to fix this issue.

5
You should try the solutions below and indicate which one helped you solve the problem. - Parth Mehrotra

5 Answers

32
votes

From this answer: https://stackoverflow.com/a/40437725/1060955

This is how I easily fixed the issue. [Update: based on feedback received and yet to be verified, it seems that this solution works with macOS Sierra 10.12 but not with macOS Sierra 10.12.2]

See video instructions here

Quit gdb

Using your text editor e.g. Sublime Text, save a file called “.gdbinit” [Exclude the quotation marks] in your user folder.

In the file add the following: “set startup-with-shell off” [Exclude the quotation marks]

Save the file

gdb should now work

Sources

https://stackoverflow.com/a/40437725/1060955

https://discussions.apple.com/thread/7684629?start=0&tstart=0

Where is .gdbinit is located and how can I edit it?

https://sourceware.org/gdb/onlinedocs/gdb/Starting.html

27
votes

If you're on Sierra , that's expected. GDB isn't compatible with macOS Sierra , even the last release (7.12).

We should maybe wait for another release of GDB , or for another update for macOS in order to get the bug fixed.

10
votes

I installed gdb via Homebrew. At the end of the installation it says:

On 10.12 (Sierra) or later with SIP, you need to run this:

echo "set startup-with-shell off" >> ~/.gdbinit

This was necessary to make it work. Also I had to make sure the .gdbinit was set in the Eclipse Debug configuration

5
votes

For me it worked perfectly on MacOS Sierra Version 10.12.4 by just uninstalling and installing gdb as,

  1. Uninstall GDB

$ brew uninstall gdb

  1. Install GDB

$ brew install gdb

This will install latest gdb which is compatible with MacOS Sierra.

Hope this help to anyone!

2
votes

Sierra (10.12) doesn't seem to support gdb. I tried following a tutorial that had me create a certificate. Afterwards, when I ran gdb, I got the same error mentioned.

Apple uses lldb. It works well, and can integrate with Eclipse, I've been told. Here is a link.