问题场景
-
用户在
机器1上用Xcode将App工程(存放于本机文件路径1)布署到iPhone上,然后在机器2上用Xcode打开文件路径2的工程,然后Attach到iPhone上的App进程,这时Xcode因为找不到文件路径1所以无法显示源代码,这时Xcode只能展示汇编代码 -
使用
Xcode调试App时,如果有些组件是二进制组件且不是本地构建的,即便本机下载了组件源码,调试时Xcode也不能自动展示相关源码
解决方案
- 将
机器1上编译App时生成的.dSYM文件拷到机器2上(如:/Users/jz/Downloads/testApp.dSYM),然后在lldb中增加符号文件路径:
/* 增加符号文件路径 */
(lldb) target symbols add /Users/jz/Downloads/testApp.dSYM
- 在
lldb中设置机器1上的文件路径1与机器2上的文件路径2的映射关系:
/* 设置源机器与当前机器上源文件路径的映射关系 */
(lldb) settings set target.source-map "机器1上的文件路径1" "机器2上的文件路径2"
/* 添加映射关系 */
(lldb) settings append target.source-map "机器1上的文件路径1" "机器2上的文件路径2"
/* 显示已配置的映射关系 */
(lldb) settings show target.source-map
注:
机器1上的文件路径1和机器2上的文件路径2对应源码的最上层目录,不需要逐级设置子目录路径映射机器1上的文件路径1和机器2上的文件路径2应该包含相同版本的源文件,否则调试时会显示异常