我试图了解动态链接在iOS 8上的工作原理,并希望在应用启动时打印已解析库的位置。这样做有什么工具吗?在崩溃报告中,当找不到dylib时,会有一些关于搜索路径的信息,但我无法在非崩溃执行中找到此信息。
具体来说,我试图了解一个有效的方案,但我认为不会:
Dynamic Library Install Name
是@ rpath / Foo.framework / Foo Runtime Search Paths
是@ executable_path / Frameworks 该应用不有任何嵌入式二进制文件(General -> Embedded Binaries
), NOT 将框架嵌入为捆绑资源(Build Phases -> Copy Bundle Resources
) 。
在生成的Bar.app
文件夹中有一个Frameworks
目录,但它不包含Foo
,并且Foo
未包含在Bar.app
内的任何其他位置。我不知道如果解析Foo
是如何解决的,因为框架已经嵌入并且应该不可用?
答案 0 :(得分:0)
我找到了我正在寻找的东西,正如Apple在一份名为Technical Note TN2239 iOS Debugging Magic的文件中所记录的那样。在本文档中,可以设置a section describing various environment variables,这将强制动态链接器写出有用的调试信息。
在Xcode(Edit Scheme -> Run -> Arguments -> Environment Variables
)中设置这些变量之后,我会获得有关链接器如何解析的详细信息。