问题场景
-
用户在
机器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
应该包含相同版本的源文件,否则调试时会显示异常