我想在从我的 Xcode 项目编译的 Objc
framework
中设置断点,并让它中断依赖于我构建的框架的 Mac 应用程序。
例如,
Application
“Blackbox”将使用Framework
“A”,而我只能访问“A”的源代码。
因此,我无法在框架项目中设置断点,只需将其更改为“User”,所有 Xcode 项目都可以访问该断点。或者简单地合并这两个项目,因为我必须访问“Blackbox”。
如何中断应用程序以跳转到我在框架中设置的断点?
我想在从我的 Xcode 项目编译的 Objc 框架中设置断点,并让它中断依赖于我构建的框架的 Mac 应用程序。
断点由调试器管理;它们没有编译到您的框架中。您需要做的是首先设置您的 Mac,以便可以将调试器 lldb 连接到您要处理的应用程序。为此,您可能需要首先禁用系统完整性保护,以便操作系统不会阻止您调试应用程序。然后,您需要构建框架时构建的符号文件的副本(以
.dsym
结尾),并且需要 将其加载到调试器中。博客文章将源代码附加到在另一台计算机上编译的 iOS/macOS 二进制文件可能会帮助您完成这些步骤。
完成所有这些后,您应该能够在框架中的特定方法上设置断点,观察单步执行框架时会发生什么,等等。您将无法执行哪些操作,除非您也可以获得应用程序本身的符号文件,用于在框架中的方法调用返回到应用程序时查看应用程序的源代码。
我能够按照以下步骤在 Mac OS X 10.4.11 上的 Xcode 2.5 中完成此操作:
构建设置(项目信息 -> 构建)
注意:可能并非所有这些选项都是必需的。
初始构建和框架链接
My.app/Contents/Frameworks/
文件夹中:ln -s /Users/you/MyFramework/build/Development/My.framework /Applications/My.app/Contents/Frameworks/My.framework
可执行设置
/Applications/My.app
调试