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.
Additional instructions if you get:
Unknown Error = -2,147,414,007on creating certificate with Certificate AssistantThe purpose for creating a certificate was to codesign gdb on Mac. Here are the steps for the same:-
1.- Create a certificate with all the parameters mentioned above.
2.- Instead of saving the Keychain under location System, save it under
Login.3.- Then, unlock the System Keychain by clicking on the lock icon on the top left corner and drag the certificate from Login to System.
4.- Right Click the Certificate, click on Get Info and and under Trust, set to
Always Trust.5.- Restart taskgated in terminal:
killall taskgated6.- Enable root account:
codesign -fs gdbc /usr/local/bin/gdbin the terminal.Disable Root Account again and you should be good to go.