Xcode调试器部分文件无法打印变量问题求助
解决Xcode调试器
po命令失效但左侧面板正常显示变量的问题 我之前也碰到过一模一样的问题!明明调试面板能看到变量,po命令却报错Couldn't apply expression side effects : couldn't get the data for variable self,折腾了好几个小时才找到几个靠谱的解决办法,给你列出来:
清理构建缓存与派生数据
这是调试问题的第一招,先彻底清一遍缓存:- 用快捷键
Cmd+Shift+K执行Clean Build Folder,或者通过菜单Product > Clean Build Folder操作 - 打开Xcode偏好设置(
Cmd+,),切换到Locations标签,找到Derived Data,点击旁边的箭头打开文件夹,删除当前项目对应的文件夹 - 重启Xcode,重新运行App,再试试
po命令
- 用快捷键
检查文件的编译优化级别
部分文件可能被单独设置了过高的优化级别,导致调试信息被剥离:- 选中项目Target,切换到
Build Settings标签,搜索Optimization Level - 确保Debug模式下的全局设置是
None [-O0] - 如果是单个文件出问题,去
Build Phases > Compile Sources找到该文件,双击文件名,在弹出的输入框里输入-O0,强制关闭该文件的优化
- 选中项目Target,切换到
验证调试信息生成配置
调试器需要完整的调试信息才能正常执行po命令:
在Build Settings里搜索Debug Information Format,确保Debug模式下设置为DWARF with dSYM File,这个选项会生成包含完整符号信息的调试文件,让调试器能正确解析变量调整断点位置与代码上下文
有时候断点打在了编译器优化后的代码位置(比如inline函数、被合并的代码块),导致po无法获取有效上下文:
试试把断点往后移动几行,或者在断点前加一行无意义的代码(比如let temp = 0)强制编译器保留该位置的上下文,再重新调试重置调试器状态
偶尔调试器会进入异常状态,试试:- 点击调试面板的停止按钮断开调试
- 关闭Xcode和模拟器/真机,重启设备后重新运行项目
- 如果还是不行,甚至可以试试重置Xcode的偏好设置(执行命令
defaults delete com.apple.dt.Xcode,注意备份偏好)
如果以上方法都没用,可以试试新建一个空白项目,把问题文件移过去测试。如果新项目里po命令正常,那大概率是原项目的配置有隐藏冲突,对比两个项目的Build Settings就能找到问题。
内容的提问来源于stack exchange,提问作者tdimeco
相关产品推荐
相关产品推荐

