If you are getting this in gdb on macOS while trying to run a program:
Unable to find Mach task port for process-id 57573: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
- Open Keychain Access
- In menu, open Keychain Access > Certificate Assistant > Create a certificate
- Give it a name (e.g.
gdbc
)
- Identity type: Self Signed Root
- Certificate type: Code Signing
- Check: let me override defaults
- Continue until "specify a location for..."
- Set Keychain location to System
- Create certificate and close Certificate Assistant.
- Find certificate in System keychain.
- Double click certificate
- Expand Trust, set Code signing to
always trust
- Restart taskgated in terminal:
killall taskgated
- Codesign gdb using your certificate:
codesign -fs gdbc /usr/local/bin/gdb
- Shut down your mac and restart in recovery mode (hold down command-R until apple logo appears)
- Open terminal window
- Modify System Integrity Protection to allow debugging:
csrutil enable --without debug
- Reboot your Mac. Debugging with gdb should now work as expected.
Managed to codesign build and gdb 12.1 +multiarch on Venture 13.2.1 on Mac Mini M2 a few weeks ago.
The I updated to Ventura 13.3. Macports had a new gdb port to 13.1.
I tried to update gdb to 13.1, which currently fails compilation on Apple Silicon due to some dylib machine architecture mismatch.
Reverted to gdb 12.1 +multiarch, tried to build, but now codesigning fails.
sudo codesign --entitlements gdb-entitlement.xml -fs gdb-cert /opt/local/bin/ggdb
/opt/local/bin/ggdb: errSecInternalComponent
Edit: Found out that I cannot do this from a SSH session from my user account.
I needed to log into the Administrator account directly from macOS and run the codesign from the terminal as a local session. This is because codesign will trigger a system administrator password dialog before it can proceed.