Xcode调试:如何查看断点处的下一个调用方法?
Xcode调试:查看下一个执行方法&避免Step Over跳转到汇编界面
嘿,我来帮你搞定Xcode调试里的这两个问题,这些场景我平时调试代码时也常碰到,都是挺实用的小技巧👇
一、如何确定断点后接下来要执行的方法
当你在某行代码命中断点后,有几种方式能提前明确下一步要执行的方法:
- 直接看当前行代码:如果当前行是明确的方法调用(比如
self.fetchUserData()或者[UIButton setTitle:forState:]),那下一步必然是进入这个方法(除非是系统隐式触发的逻辑,但这种情况很少见)。 - 用Smart Step Into(智能步入):快捷键是
Ctrl+Shift+F7,按下后会弹出一个列表,显示当前行所有可进入的方法/函数。比如当前行同时调用了自己写的业务方法和系统工具方法,你可以直接选择想跟进的那个,精准锁定下一步要执行的方法。 - 临时查看汇编找线索:虽然你不想看到汇编界面,但如果当前行调用的方法不明确,你可以临时切换到Disassembly View(点击Debug Area右上角的
{}图标),里面的callq指令旁边会标注方法名(比如callq 0x12345 - [YourViewController loadPageData]),看完后再切回源代码界面就行。 - 断点日志自动提示:右键断点选择「Edit Breakpoint」,添加一个「Action」,类型选「Log Message」,然后输入
%B,勾选「Automatically continue after evaluating actions」。这样断点命中时会自动打印下一个要执行的方法名,不用手动操作就能知道下一步逻辑。
二、避免Step Over跳到汇编界面的方法
你说的那个显示十六进制的界面是Disassembly View(汇编视图),Step Over(F6)跳到这里,通常是因为当前行调用了没有符号信息的代码,比如系统闭源方法、未带符号表的第三方库,或者代码被编译优化了。解决办法如下:
- 确保处于Debug模式:在Xcode顶部的Scheme选择器里,确认当前是「Debug」模式(不是Release)。然后去
Build Settings里找到「Optimization Level」,Debug模式下要设置为None [-O0]——Release模式的编译优化会去掉符号信息,导致调试时直接跳汇编。 - 下载系统调试符号:如果是调用系统方法时跳汇编,可能是Xcode没加载系统符号。你可以点击Xcode顶部菜单的「Debug → Debug Workflow → Download Debug Symbols」,手动下载系统的调试符号,之后就能看到系统方法的伪代码(或框架代码),不会直接跳汇编。
- 用Smart Step Into替代Step Over:如果当前行同时有自己的业务代码和系统工具代码,用
Ctrl+Shift+F7的智能步入,选择你自己写的方法进入,就能跳过系统方法的汇编环节。 - 快速切回源代码界面:不小心跳到汇编后,直接点击Debug Area右上角的源代码图标(和
{}图标切换),就能立刻回到熟悉的代码界面,不用慌。
内容的提问来源于stack exchange,提问作者JFortYork
相关产品推荐
相关产品推荐

