在xcode中进行调试时,有多种方法可以帮助开发者更有效地查找和解决问题。本文将详细介绍xcode调试的几种常用方法,包括普通断点、全局断点、条件断点和方法断点等。
1. 普通断点
普通断点是调试中最常用的工具之一。当程序运行到断点处时,程序会暂停执行,允许开发者进行单步调试。

程序在断点处暂停后,可以进行单步调试。

2. 全局断点
全局断点在程序出现崩溃时会自动暂停在崩溃的代码行,帮助开发者快速定位问题。

3. 条件断点
条件断点可以在满足特定条件时才触发,避免在循环中多次触发断点,提高调试效率。
编辑断点并添加条件:

添加条件Condition:


还可以在Action中设置条件断点触发时执行的操作,例如输出信息:


4. 方法断点和NSLog调试
尽管ARC简化了内存管理,但跟踪对象生命周期仍然重要。NSLog可以用来输出调试信息。
增强版NSLog:
// 增强版NSLog#define NSLog(format, ...) do { fprintf(stderr, " %sn", [[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __func__); (NSLog)((format), ##__VA_ARGS__); fprintf(stderr, "-------n"); } while (0)
控制台输出示例:
-[ViewController viewDidLoad]2016-10-14 17:33:31.022 DEUBG[12852:1238167] Hello World!-------
利用NSString可以输出多种类型的数据:

开启僵尸对象
Xcode可以将已释放的对象变成“僵尸”,当访问这些对象时,Xcode会提示错误,帮助开发者发现内存问题。

控制台(LLDB命令)
LLDB是一个开源调试器,集成在Xcode中,允许开发者在程序运行时暂停、查看变量值和执行自定义指令。
常用LLDB命令:
FlowGPT
ChatGPT指令大全
173 查看详情
help:显示支持的LLDB命令print(缩写p):打印值po:打印对象expression:流程控制

print命令可以指定格式打印:
(lldb) p 1616(lldb) p/x 160x10(lldb) p/t 160b000000000000000000000000000000010000(lldb) p/t (char)160b00010000
po命令用于打印对象:
(lldb) po [NSString stringWithFormat:@"Hello, %@", @"World"]Hello, World
expression命令用于流程控制:
(lldb) expression i = 5(int) $0 = 5
调试条上的四个按钮分别是:继续(continue)、步过(step over)、步入(step into)和步出(step out)。

continue(缩写c):继续执行程序step over(缩写n):执行一行代码,不进入函数step into(缩写s):进入函数调试step out:执行到函数返回
frame info命令可以查看当前的行数和源码文件:
(lldb) frame infoframe #0: 0x000000010a53bcd4 DebuggerDance`main + 68 at main.m:17
thread return命令可以控制程序流程,伪造返回值:
(lldb) thread return NO
不用断点调试
在程序运行时,点击暂停按钮即可进入调试状态,可以对全局变量进行操作。

工具调试(Instruments)
Xcode自带多种调试工具,打开方式如下:

Leaks:内存泄漏检查工具

运行后查看结果:

视图调试:启用视图调试,运行app过程中,按下底部的Debug View Hierarchy按钮,或从菜单中选择Debug > View Debugging > Capture View Hierarchy。

启动视图调试后,Xcode会展示三维原型视图,帮助探究用户界面的层级。
模拟器调试:编译并运行应用程序,选中模拟器,从Debug菜单中选择Color Blended Layers选项。

然后会看到app的用户界面被红色和绿色覆盖,显示了哪些图层可以被叠加覆盖,以及哪些图层是透明的。

结语
以上介绍了Xcode调试的几种常用方法。如果有其他有趣的调试方法,欢迎分享!
以上就是Xcode Debug 大全的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/757292.html
微信扫一扫
支付宝扫一扫