用于调试动态库的iOS工具

时间:2015-08-21 17:54:20

标签: ios xcode dyld

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

具体来说,我试图了解一个有效的方案,但我认为不会:

  • Swift Framework(Foo):Dynamic Library Install Name是@ rpath / Foo.framework / Foo
  • Swift app(Bar):Runtime Search Paths是@ executable_path / Frameworks

该应用有任何嵌入式二进制文件(General -> Embedded Binaries), NOT 将框架嵌入为捆绑资源(Build Phases -> Copy Bundle Resources) 。

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

1 个答案:

答案 0 :(得分:0)

我找到了我正在寻找的东西,正如Apple在一份名为Technical Note TN2239 iOS Debugging Magic的文件中所记录的那样。在本文档中,可以设置a section describing various environment variables,这将强制动态链接器写出有用的调试信息。

在Xcode(Edit Scheme -> Run -> Arguments -> Environment Variables)中设置这些变量之后,我会获得有关链接器如何解析的详细信息。