I guess you could also write a kernel extension that allows inspecting memory, changing memory, setting breakpoints, etc. from a user-mode program using fcntl but if you stop the kernel, chances are user-mode locks up, too (might be guaranteed; I don’t know how much multi-threading there is in the MacOS kernel)