通过 LLDB 调试 OSX 应用程序的发布版本

Debug a release version of an OSX App via LLDB

我正在尝试通过 LLDB 调试 OSX 桌面应用程序(Mac os catalina 10.15.3)。

lldb path/to/Electron.app
>>> Current executable set to 'path/to/Electron.app' (x86_64).

之后我可以成功地向调试器添加断点,但是当我尝试使用 runprocess launch 运行 应用程序时,它总是给我:

error: process exited with status -1 (Error 1)

附加到 pid 的另一个问题。它给我一个错误,无法附加到进程。

lldb -p 41324
>>> error: attach failed: Error 1

为什么我不能在调试器中反汇编程序?

在 macOS 上,调试器只能附加到一个进程,前提是该进程已将自身标记为愿意被调试(具有适当的权利)。 Xcode 一般用这个权限构建 Debug 版本,没有它的 Release 版本。当 lldb 尝试附加到一个不想被调试的进程时,这就是您看到的错误。这是一个低信息错误,因为拒绝附加的代理与 lldb 隔离开来,并且无法为我们提供更多信息。

但是请注意,您不需要 运行 反汇编程序。反汇编命令在您加载二进制文件时以及在调试二进制文件时都有效。

我只是找到了调试的方法,并没有限制任何 root 可访问性... 这是关于Apple的系统完整性保护 https://support.apple.com/en-us/HT204899

如果您愿意禁用系统完整性保护,请小心并知道您在做什么。

这是一篇介绍如何禁用系统完整性保护的文章 https://gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d