“please check gdb is codesigned - see taskgated(8)

2019-01-12 16:49发布

I'm under osx 10.8.4 and have installed gdb 7.5.1 with homebrew (motivation get a new gdb with new features such as --with-python etc... )

Long story short when I run debug within a c++ Eclipse project I get :

Error in final launch sequence
Failed to execute MI command:
-exec-run
Error message from debugger back end:
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))
Unable to find Mach task port for process-id 46234: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

I have followed various suggestions for code signing

So I did:

  1. Set up the certificate
  2. Sign the gdb -> codesign -s gdb-cert /usr/local/bin/gdb

When I re-run debugging in Eclipse I get same error as above "(please check gdb is codesigned - see taskgated(8))".

If I set back the gdb to the older gdb (in the gdb preferences of Eclipse) /usr/libexec/gdb/gdb-i386-apple-darwin the debugging runs as expected.

Any solutions / hints out there ?

Thx

Pelle

7条回答
我命由我不由天
2楼-- · 2019-01-12 17:17

None of this worked for me and I had to go with a long run. Here is a full list of steps I've done to get it working.

  1. Create a certificate to sign the gdb.

Unfortunately, system certificate gave me Unknown Error = -2,147,414,007 which is very helpful, so I had to go with a workaround. KeyChain Assistant -> Create certificate ->

Pick login, gdb-cert, Code Signing

Copy/move certificate to the System keychain (enter password)

  1. Select certificate (gdb-cert) click Get info -> Trust Always
  2. Disable startup-with-shell

Enter in console: set startup-with-shell off

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

  1. Enable Root User

Go to System Preferences -> Users & Groups -> Unlock it -> Login Options -> Network Account Server -> Join -> Unlock it -> Edit (menu) -> Enable Root User

  1. sudo killall taskgated
  2. Finally sign gdb

codesign -fs gdb-cert "$(which gdb)"

  1. Disable Root User (Step 4)
  2. Reboot if still does not work. (if nothing else works, most likely it works already)

PS. I end up using lldb because it just works (tutorial)

查看更多
登录 后发表回答