Apr
2018
GDB Installation on Mac OS X
If you work on a Mac OS X 10.9 Mavericks or later, you will run into the problem of Eclipse refusing to interactively debug problems that otherwise build and run fine: An attempt to start a debugging session by selecting Error with command: gdb –version
has occurred.
The problem is caused by Apple switching away from GDB, the GNU debugger, to LLDB, the LLVM debugger, in their Xcode toolchain (along with the transition from GCC to Clang). Unfortunately, Eclipse is not capable of communicating with any debugger other than GDB (yet). Here is a step-by-step guide for installing and configuring GDB.
Installing GDB
As with GCC, the easiest way to install GDB is through Homebrew. In a Terminal window, run the command brew install gdb
, and wait for it to complete. (As usual, it may ask for your password.)
Now, we need to code-sign the GDB executable, so it will be allowed to control other processes, as necessary for a debugger. For that, we will first create a new certificate in Keychain.
Creating a Certificate
Open the Keychain Access application (can be found in Applications/Utilities directory or through Spotlight). Select
in the application menu ( ). An assistant window will appear for guiding you through the process.- First, you will be asked for the name and type of the certificate. You may choose the name arbitrarily, but to simplify its future use in command line, prefer names without spaces or other fancy characters, e.g.,
gdbcert
. - Make sure that is set to , change to , check the checkbox, and click . Click again in the popup prompt warning about the certificate being self-signed.
- On the next page, leave to be 1, and set to a large enough number of days to cover the duration of the class or more, say, 365. (Certificates cannot last forever; the maximum validity period is 20 years.)
- Then click once again, and keep doing so to skip the next six screens until you see the one entitled . For the only property, , choose from the drop-down list. Lastly, click , type in your password, if prompted, and click .
- Back in the main window, choose the keychain in the sidebar on the left, and select the newly created certificate from the list. Open the context menu and select . In the information window that will appear, expand the section and set the property to . Close this window (you may be asked for your password), and quit Keychain Access.
Signing GDB
Our new certificate is now ready to be used. In order to make it immediately available for signing, we need to restart the Taskgate access-control service. You can use Activity Monitor to do this (also found in Applications/Utilities). Open it and filter the list of processes by typing taskgated
in the search field in the toolbar. (If you cannot find it, make sure the menu item is checked.)
There should be exactly one process left in the list. Highlight it, then select
from the menu, and click in the popup prompt. The Taskgate process will be terminated and, consequently, should disappear from the list. In a few seconds, it will be restarted by the system and should reappear in the list. Please wait for this to happen (it may take up to a minute or two, at worst).Finally, in a Terminal window, run codesign -s gdbcert /usr/local/bin/gdb
(if you named your certificate differently, replace gdbcert
with its name here). Once again, you will be prompted for you username and password. If the command does not produce any output, then GDB is successfully signed.
Configuring Eclipse
The only thing left to do is to point Eclipse to the GDB executable. Open /usr/local/bin/gdb
.
If there is no gdb
command, but it will force the said settings to appear in the preferences.
This will change the GDB executable for new projects; for all existing ones (that you are going to use debugging for), you will need to manually update their debug configurations. To do that, select /usr/local/bin/gdb
, and click the button. After repeating this change for all listed projects, click .