Xcode调试本地依赖库:如何让符号断点跳转实际源文件
解决Xcode调试静态库时无法跳转本地源码的问题
我之前也踩过这个一模一样的坑,折腾了好半天终于搞定了,给你分享几个亲测有效的解决方案:
1. 确保静态库B编译时包含完整调试符号
如果静态库编译时没保留调试信息,Xcode就算拿到符号也找不到对应的源码,先检查这个关键设置:
- 打开项目B,选中对应的target,进入Build Settings
- 搜索
Debug Information Format,在Debug配置下设置为DWARF with dSYM File(Release配置可以保持默认,但Debug一定要选这个) - 搜索
Strip Debug Symbols During Copy,Debug配置下设置为NO - 重新编译项目B,生成新的
.a文件替换项目A中引用的旧库
2. 将项目B直接加入项目A的Workspace(最推荐的方法)
只引用静态库文件容易出现源码关联问题,把整个项目B加入Workspace能让Xcode自动关联源码:
- 打开项目A,通过
File > Add Files to "Project A",选择项目B的.xcodeproj文件添加到项目中 - 进入项目A的target,在Build Phases > Link Binary With Libraries里,移除原来的
.a文件,添加项目B的静态库target(就是项目B里编译生成静态库的那个target) - 确保项目A和项目B的Debug配置(比如iOS版本、架构)保持一致
- 执行
Cmd+Shift+K清理项目,再重新编译运行
3. 手动关联符号文件与源码路径
如果上面两种方法都不行,可以手动告诉Xcode去哪里找B的源码:
- 当断点触发打开符号化代码时,右键编辑器区域,选择
Add Source Path,直接指向项目B的源码根目录 - 另外,检查项目B的dSYM文件是否存在:打开Xcode的
Window > Organizer,找到项目B的归档(如果有),右键Show in Finder找到dSYM文件;然后在项目A的调试面板底部点击+,选择Add Symbol File,添加这个dSYM文件 - 清理Derived Data缓存:打开Xcode的
Preferences > Locations,点击Derived Data旁边的箭头打开文件夹,删除项目A和B对应的缓存文件夹,再重新编译
额外注意事项
- 确保项目A和项目B当前都处于Debug编译配置,Release模式下调试信息会被自动剥离
- 如果项目B的源码文件夹被移动过,要确保Xcode能找到新的路径,必要时重新添加源码到项目B中
内容的提问来源于stack exchange,提问作者prabodhprakash
相关产品推荐
相关产品推荐

