Making MacOS be Friendly with gdb
MacOS has lots of cool security features, by default the OS will only run
signed code. Great security has trade offs, tonight I was hit my MacOS
restricting permissions.
gdb
needs to be signed before it will be allowed to
debug other program. It manifests like this:
$ gdb -q neat-streamer
Reading symbols from neat-streamer...done.
(gdb) r
Starting program: /Users/jones/code/neat-streamer/neat-streamer
Unable to find Mach task port for process-id 13334: (os/kern) protection failure (0x2).
(please check gdb is codesigned - see taskgated(8))
Learning
lldb
seems like far too much work, this needs fixed. Searching
brings up
stackoverflow
questions, with a pointer to
this guide
that
explains the entire process. In general you need to create a code signing key,
sign the gdb binary and then restart the enforcement service
taskgated
.
The restart commands were a little harder to track down.
Restart
taskgated
:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.taskgated.plistv
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.taskgated.plistv
There are also
start and stop
commands, but this didn't work for me. The
troubleshooting on the guide was of no help. I even went as far as trying a
reboot, but no luck. Maybe I will try figuring out
lldb
.
If anyone has any idea hows to get this working, I would love some help.