XCode 15.2中lldb po命令失效,报GTMSessionFetcherCore模块未找到
修复Xcode 15.2中LLDB
po 命令触发的模块找不到报错 问题根源
Xcode 15.2的LLDB存在bug,会错误地给CocoaPods管理的项目启用SWIFT_PACKAGE预编译宏,导致GIDGoogleUser.h里的条件编译逻辑走了Swift Package的导入分支(@import GTMSessionFetcherCore;),但你的项目是用CocoaPods引入的GTMSessionFetcherCore,它以静态库/头文件形式存在而非Swift Package模块,因此触发“module not found”错误。
修复方案
方案1:临时修改GoogleSignIn头文件(快速生效)
找到Pods/GoogleSignIn/GoogleSignIn/Sources/Public/GoogleSignIn/GIDGoogleUser.h,修改第27行的条件编译逻辑,强制走CocoaPods分支:
// 原代码 #if defined(SWIFT_PACKAGE) @import GTMSessionFetcherCore; #else #import <GTMSessionFetcher/GTMSessionFetcher.h> #endif // 修改后 //#if defined(SWIFT_PACKAGE) //@import GTMSessionFetcherCore; //#else #import <GTMSessionFetcher/GTMSessionFetcher.h> //#endif
注意:执行pod install或pod update后会覆盖修改,需要重新操作。
方案2:给LLDB添加宏定义屏蔽SWIFT_PACKAGE
- 打开Xcode,进入项目的
Edit Scheme→Run→Arguments标签页 - 在
Environment Variables点+,添加变量:- 变量名:
LLDB_PREPEND_FRAMEWORK_SEARCH_DIRS - 变量值:
NO
- 变量名:
- 或者每次调试时在LLDB控制台直接执行:
settings set target.swift-framework-search-paths "" settings set target.preprocessor-definitions '${target.preprocessor-definitions} -DSWIFT_PACKAGE=0'
这个方法会强制LLDB不启用SWIFT_PACKAGE宏,让头文件走正确的导入逻辑。
方案3:升级依赖或Xcode版本
- 把GoogleSignIn的CocoaPods版本升级到最新稳定版,部分新版本已修复该条件编译的兼容性问题
- 尝试升级Xcode到15.3及以上,苹果大概率在后续版本修复了LLDB的这个宏定义bug
验证方法
修改后重启Xcode,清理DerivedData,运行项目后在LLDB控制台执行po命令,检查是否还会抛出模块找不到的错误。
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

