Xcode Instruments Time Profile报Unknown Address符号化失败
Xcode Instruments Time Profiler 显示
<Unknown Address> [inlined] 修复方案 该问题是Xcode 13及以上版本的常见问题,通常由CLT路径配置错误、Instruments沙盒权限拦截、dSYM UUID不匹配三个原因叠加导致,按以下顺序操作即可修复:
- 修复Command Line Tools路径配置
打开终端执行命令:
执行完成后彻底退出Xcode和Instruments再重新打开,此时Instruments的File > Symbols页面的CLT权限报错会直接消失。注意不要将CLT路径设置为独立安装的Command Line Tools目录(即sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/Library/Developer/CommandLineTools),必须指向Xcode内置的开发者目录,否则Instruments无法读取Xcode构建产物的符号信息 - 校验dSYM与运行包的UUID匹配性
手动选择dSYM不生效的核心原因通常是dSYM和当前设备/模拟器上运行的应用二进制UUID不匹配,可通过终端命令校验:- 查询应用二进制UUID:
dwarfdump --uuid <你的AppName.app路径>/AppName - 查询dSYM文件UUID:
dwarfdump --uuid <你的AppName.app.dSYM路径>/Contents/Resources/DWARF/AppName
若两个命令输出的UUID不一致,直接执行rm -rf ~/Library/Developer/Xcode/DerivedData/清空构建缓存,重新Build产物即可,不要复用旧的dSYM文件。
- 查询应用二进制UUID:
- 关闭Instruments沙盒限制
Xcode 13之后Instruments默认开启沙盒,无权限读取用户目录下的dSYM文件,即使手动选择路径也会被系统拦截,导致配置不持久、符号不生效。终端执行命令:
执行完成后彻底退出Instruments再重启。defaults write com.apple.dt.Instruments DisableSandbox -bool YES - 用正确流程启动Profiler
不要手动打开Instruments后附加进程,必须在Xcode中打开项目,按Cmd + I直接唤起Instruments启动Profile流程,Xcode会自动将当前构建版本对应的dSYM路径同步给Instruments,无需手动配置。启动Time Profiler后,在顶部录制设置中取消勾选Defer symbol resolution until after recording选项,避免录制完成后再解析符号导致的匹配失败。 - 真机场景额外检查
如果是真机调试,先打开Xcode的Window > Devices and Simulators,选中连接的真机右键选择Show Provisioning Profiles,清理所有过期的描述文件;同时确认真机上开发者模式已开启,且已经信任当前使用的开发者证书,第一次启动Profile时真机弹出的调试权限申请要选择允许。
验证标准
完成上述配置后重新录制性能数据,若Symbols页面中你的应用条目旁无黄色警告标识,调用栈可以正常显示自定义函数名,没有大量<Unknown Address> [inlined]提示,即为修复成功。
内容的提问来源于stack exchange,提问作者muZero
相关产品推荐
相关产品推荐

