简体   繁体   中英

Mac C++/Mars eclipse gdb debug hangs at Launching Test 96%

When I try to debug a simple c++ program in Eclipse Mars (4.5.2) on Mac El Capitan (10.11.5), it hangs on "Launching Test (96%)".

I have gdb installed with homebrew. When I type "which gdb" in terminal it says, "/usr/local/bin/gdb".

Here are screenshots of the problem and of my GDB settings: http://imgur.com/a/JrMjN

This is the same problem as Mac C++/Mars eclipse gdb debug launching stuck at 96% but it was never solved there.

You have to sign gdb to be trusted to control the execution of another process. This is part of the security structures that are present in ElCapitan (have been like this since Mavericks).

You can do this by following the instructions below (extract from the blog post http://ntraft.com/installing-gdb-on-os-x-mavericks/ which contains more information on the topic).


Certifying GDB

Open up the Keychain Access application (/Applications/Utilities/Keychain Access.app). Navigate via the menu to Keychain Access > Certificate Assistant > Create Certificate...

创建证书菜单条目说明

Enter a name for the certificate. For this how-to, I'll call it "gdb-cert". Set the fields exactly as shown below.

创建证书步骤1

The maximum validity period is 999 days. I don't really want to deal with this again, so I'm going to max it out. /* Addendum: this means that you will have to do this again in 999 days, ie 2.7 years. You might want to bookmark this page. */

创建证书步骤2

Keep clicking the "Continue" button until you are asked for a location. Set it to "System". If you are unable to save it to the System keychain, then save it to the login keychain. You can later export the cert, and then import it into the System keychain. I didn't have to do this, so comment if you have any problem.

创建证书步骤3

Success!

创建证书步骤4

Now make sure the cert is always trusted. Right-click the new certificate and select Get Info. Under the Trust section, set Code Signing to Always Trust.

证书获取信息 始终信任代码签名

Now that we have a certificate, we need to use it to sign GDB. First, we'll restart the taskgated process to make sure it picks up the new certificate. Quit Keychain Access (you must quit Keychain Access!) and return to the Terminal for these final commands.

Find the taskgated process.

$ ps -e | grep taskgated
56822 ??         0:03.11 /usr/libexec/taskgated -s
60944 ttys002    0:00.00 grep --color=auto taskgated

The first number in the above output is the PID. Use this to kill the process (it will immediately restart itself).

$ sudo kill -9 56822

Now you can finally code sign GDB.

# If installed through MacPorts
$ codesign -s gdb-cert $(which gdb-apple)
# If installed through Homebrew
$ codesign -s gdb-cert $(which gdb)
# For the settings posted by OP
$ codesign -s gdb-cert /usr/local/Cellar/gdb/7.11/bin/gdb

Now you should be all set! The OS X Keychain may ask for your password the first time you attempt to debug a program, but it should work!

/* Addendum: for me to be able to have full functionality I had to reboot the machine. */

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM