如何调试iOS框架dyld“;惰性符号绑定失败“;撞车

如何调试iOS框架dyld“;惰性符号绑定失败“;撞车,ios,swift,xcode,Ios,Swift,Xcode,我正在使用OS X 10.11.6上的Xcode 8.2.1为iOS 10.2构建一个iPad应用程序,当我试图调用使用由生成的特定依赖项的代码时,该应用程序崩溃,似乎表明框架二进制文件未按预期在内存中: dyld: lazy symbol binding failed: Symbol not found: __TFC12ObjectMapper6MapperCfT7contextGSqPS_10MapContext___GS0_x_ Referenced from: /Users/me/L

我正在使用OS X 10.11.6上的Xcode 8.2.1为iOS 10.2构建一个iPad应用程序,当我试图调用使用由生成的特定依赖项的代码时,该应用程序崩溃,似乎表明框架二进制文件未按预期在内存中:

dyld: lazy symbol binding failed: Symbol not found: __TFC12ObjectMapper6MapperCfT7contextGSqPS_10MapContext___GS0_x_
  Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/AlamofireObjectMapper.framework/AlamofireObjectMapper
  Expected in: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper

dyld: Symbol not found: __TFC12ObjectMapper6MapperCfT7contextGSqPS_10MapContext___GS0_x_
  Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/AlamofireObjectMapper.framework/AlamofireObjectMapper
  Expected in: /Users/me/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID>/AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
dyld:惰性符号绑定失败:找不到符号:\uuuuuuuuuuuuuuuuu2objectmapperper6mappercft7contextgsqps\u10macontext\uuuuuuuuugs0\ux_
引用自:/Users/me/Library/Developer/CoreSimulator/Devices//data/Containers/Bundle/Application//AppName.app/Frameworks/alamofileobjectmapper.framework/alamofileobjectmapper
预期位于:/Users/me/Library/Developer/CoreSimulator/Devices//data/Containers/Bundle/Application//AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
dyld:未找到符号:_TFC12;对象映射程序6MapperCfT7ContextGSQPS_10MapContext__GS0_x_
引用自:/Users/me/Library/Developer/CoreSimulator/Devices//data/Containers/Bundle/Application//AppName.app/Frameworks/alamofileobjectmapper.framework/alamofileobjectmapper
预期位于:/Users/me/Library/Developer/CoreSimulator/Devices//data/Containers/Bundle/Application//AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper
我使用它来进行HTTPS调用,并(扩展为)解析JSON响应。它在该应用程序/项目之前的许多运行中都运行良好,并且似乎自发地开始崩溃

奇怪的是,Alamofire调用确实发出请求并接收响应,但在解析响应(其格式或数据未更改)时会发生崩溃。因此,很明显,包括迦太基构建的框架对某些依赖项有效,但对其他依赖项无效。我在我的
Cartfile
中指定
==
,并使用
Cartfile.resolved
为所有依赖项确定准确的版本

我试过的
  • 将代码回滚到已知的良好提交,以验证它不是新引入的错误代码更改
  • 退出并重新启动Xcode
  • 退出并重新启动iOS模拟器
  • 清除Xcode“派生数据”文件夹
  • 重新启动机器
  • 废弃和重建的迦太基依赖项(
    Carthage更新——平台iOS
  • 已验证
    ObjectMapper.framework
    与其他迦太基构建的框架一起包含在目标的链接二进制库构建阶段:
  • 已验证路径
    $(SRCROOT)/Carthage/Build/iOS/ObjectMapper。运行脚本构建阶段的输入文件中包含框架
    ,用于运行
    /usr/local/bin/Carthage copy frameworks
    ,以及其他几乎相同(和工作)的框架路径:
  • 清理产品并使用Xcode重新构建
  • 已验证ObjectMapper framework二进制文件是否存在于
    /AppName.app/Frameworks/ObjectMapper.framework/ObjectMapper

我无法理解为什么这个框架显然正在构建、包含但没有加载。如何更深入地调试此问题?

我遇到了相同的问题。在AlamoFileObject Mappter Github上检查此问题


AlamoFileObjectMapper可能不支持ObjectMapper的最新版本。。。在迦太基的github“Hearst DD/ObjectMapper”“2.2.1”上修复2.2.1版本,这是我的问题,谢谢!在此期间,其他人通知我使用一些dyld调试环境变量(),并使用
lipo-info/path/to/framework/binary
检查ObjectMapper框架二进制文件,以查看是否有用于任何所需架构的切片。