如何在Xcode中查看当前运行的代码行(无需断点,需执行记录)
在Xcode中无断点追踪代码执行路径的方法
当然有办法!在Xcode里不用断点也能追踪已执行的代码行、生成执行记录列表,我给你分享几个实用的官方方案:
1. 使用Xcode Instruments的System Trace工具
这是最全面的系统级追踪方案,能帮你完整查看代码执行路径:
- 启动你的App时,点击Xcode顶部菜单栏的
Product > Profile(快捷键Cmd+I); - 在弹出的模板选择窗口中,选择System Trace;
- 开始录制后正常操作App,结束录制后,在结果面板找到你的App进程,展开后就能看到所有执行过的代码调用栈,还能按时间线查看代码的执行顺序。你可以通过过滤功能,只显示特定文件或方法的执行记录,快速定位关心的代码行。
2. 用OSLog + Signposts做定制化执行记录
如果想要更轻量、自定义的执行追踪,可以用Apple官方的日志API标记代码执行节点:
- 首先在代码中导入头文件:
import os.log; - 定义专属的日志对象:
private let executionLogger = OSLog(subsystem: "com.yourcompany.yourapp", category: "ExecutionTrace") - 在你想追踪的代码段前后添加标记:
os_signpost(.begin, log: executionLogger, name: #function) // 这里是你要追踪的代码逻辑 os_signpost(.end, log: executionLogger, name: #function) - 打开Xcode的控制台(快捷键
Cmd+Shift+C),点击右上角的过滤按钮,选择你定义的subsystem和category,就能看到所有标记的执行记录,包括每个方法的开始/结束时间,相当于生成了一份清晰的执行路径列表。
3. 利用Debug Navigator的Call Stack History
如果只是想快速回溯最近的代码执行路径,可以用这个方法:
- 当App处于运行状态时,打开Xcode左侧的Debug Navigator(快捷键
Cmd+7); - 点击顶部的「Call Stack History」按钮(图标是一个小时钟),这里会记录最近的调用栈历史,虽然不是逐行的执行记录,但能帮你快速了解代码执行的关键路径,知道当前代码运行到了哪个环节。
这些方法都不需要设置断点,完全靠运行时生成的记录来帮你追踪代码位置,根据你的需求选合适的就好~
内容的提问来源于stack exchange,提问作者Hunter




