用于调试动态库的iOS工具

用于调试动态库的iOS工具,ios,xcode,dyld,Ios,Xcode,Dyld,我试图了解动态链接在iOS 8上的工作原理,并希望在应用程序启动时打印解析库的位置。有什么工具可以做这件事吗?在没有找到动态库的崩溃报告中,有一些关于搜索路径的信息,但我在非崩溃执行中找不到这些信息 具体来说,我试图理解一个可行的场景,但我认为不会: Swift框架(Foo):动态库安装名称is@rpath/Foo.Framework/Foo Swift应用程序(条形):运行时搜索路径为@executable\u路径/框架 应用程序没有任何嵌入式二进制文件(常规->嵌入式二进制文件),并且没

我试图了解动态链接在iOS 8上的工作原理,并希望在应用程序启动时打印解析库的位置。有什么工具可以做这件事吗?在没有找到动态库的崩溃报告中,有一些关于搜索路径的信息,但我在非崩溃执行中找不到这些信息

具体来说,我试图理解一个可行的场景,但我认为不会:

  • Swift框架(Foo):
    动态库安装名称
    is@rpath/Foo.Framework/Foo
  • Swift应用程序(条形):
    运行时搜索路径
    为@executable\u路径/框架
应用程序没有任何嵌入式二进制文件(
常规->嵌入式二进制文件
),并且没有将框架作为捆绑资源嵌入(
构建阶段->复制捆绑资源


在生成的
Bar.app
文件夹中有一个
Frameworks
目录,但它不包含
Foo
,并且
Foo
不包含在
Bar.app
中的任何其他位置。我不知道如何解决
Foo
,因为该框架是嵌入式的,应该不可用?

我找到了我要找的东西,正如苹果在一份名为。在本文档中,有一个can-bet集合,它将强制动态链接器写出有用的调试信息


在Xcode(
Edit Scheme->Run->Arguments->Environment variables
)中设置这些变量后,我得到了有关链接器解析方式和解析内容的详细信息。

请确保在设备上测试,而不是在模拟器上测试,因为它们的链接行为不同。我还没有深入研究,但似乎iOS模拟器将动态链接到应用程序包之外的框架,iOS设备将不允许这样做。感谢您的提示,我们将确保做到这一点!