如何在Xcode中仅调试自定义代码?排除非自研代码调试咨询
如何在Xcode中仅调试自研代码并从指定行启动调试
嘿,我太懂你这种调试时频繁跳进系统或第三方代码的烦躁了!这就给你一套实用方案,既能屏蔽非自研代码的干扰,又能精准从你指定的代码行开始调试:
一、屏蔽非自研代码,只调试自己写的代码
1. 开启「跳过非项目代码」功能
这是最直接的方法,Xcode自带这个贴心功能:
- 打开Xcode顶部菜单,选择
Debug > Debug Workflow > Skip Non-Project Code - 开启后,调试过程中遇到系统框架(比如UIKit、Foundation)或第三方库的代码时,Xcode会自动跳过,直接停在你自己写的代码断点或执行点上
2. 手动配置忽略的框架(进阶)
如果上面的方法没完全解决问题,你可以手动指定要忽略的框架:
- 打开Xcode的「Breakpoints」面板(快捷键Cmd+8)
- 点击左下角的「+」,选择「Symbolic Breakpoint」
- 在弹窗里,点击「Action」添加一个动作,选择「Debugger Command」,输入
process handle -n "UIKit" -s false -n false -p false(把UIKit换成你想忽略的框架名,比如第三方库的框架) - 勾选「Automatically continue after evaluating actions」,这样遇到该框架的代码就会自动跳过
3. 关闭不必要的符号下载
有时候Xcode自动下载的系统调试符号会让你不小心跳进系统代码,你可以:
- 打开Xcode偏好设置(Cmd+,),进入「Components」标签
- 找到「Debug Symbols」,取消勾选不需要的系统版本符号,或者直接关闭自动下载
二、从指定代码行开始调试
针对你给出的这段代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { CG.setId(indexPath.row) //我希望从这一行开始调试应用 performSegue(withIdentifier: "sgShowIssue", sender: self) }
你可以这样操作:
1. 设置行断点
直接在CG.setId(indexPath.row)这一行的左侧 gutter(代码行号旁边的空白区域)点击一下,会出现一个蓝色的断点标记。运行应用后,当用户点击tableView的cell时,代码会自动停在这一行,你就可以从这里开始调试了。
2. 禁用其他无关断点(可选)
如果你的项目里还有其他断点,怕被打断的话:
- 打开「Breakpoints」面板(Cmd+8)
- 点击面板顶部的「Deactivate All Breakpoints」按钮(或者用快捷键Cmd+Y),然后再单独激活你刚才设置的那个行断点,这样就只会在指定行暂停
3. 临时跳转调试(已运行时)
如果应用已经在运行,你想临时跳转到这一行调试:
- 找到目标代码行,右键点击选择「Jump to Line」
- 注意:这个操作会跳过中间未执行的代码,适合临时调试场景,正式调试还是用断点更稳妥
额外小技巧
调试时,在左侧的「Debug Navigator」(栈帧面板)里,右键点击任意栈帧,选择「Show Only Project Code」,可以快速过滤掉非自研代码的栈帧,让调用栈更清晰。
内容的提问来源于stack exchange,提问作者user10021033
相关产品推荐
相关产品推荐

