Xcode控制台调试常用命令

本文介绍了Xcode调试过程中常用的命令,包括p命令用于查看基本数据类型和对象的值,po命令打印对象,expr命令用于动态执行赋值表达式,call命令实现动态调用函数,bt和btall命令显示线程堆栈信息,p/t和x命令用于打印内存数据,以及image命令用于查看内存中的模块信息。这些技巧对于深入理解和调试iOS应用非常有帮助。

1. p 命令

print 命令的简写

使用p 命令可以查看基本数据类型的值

使用p 命令 查看对象,那么只会返回对象的指针地址。

p 命令后面除了可以接 变量、常量,还可以跟表达式。(但是不可以是宏)

2. po 命令

po 命令可以理解为打印对象。

功能与 p 命令类似,所以也是可以打印常量、变量,打印表达式返回的对象等。(不可以打印宏)

除了使用命令外,我们也可以使用左侧区域,点击变量右键—> print Description of “xxx”

3.expr 命令

expr 是 expression 的简写,

使用expr 命令,能够在调试时,动态的执行赋值表达式,同时打印出结果。

在调试时,动态的修改变量的值,这在调试想要让应用执行异常路径(如执行某个else 情况)很有用。

4.call 命令

Xcode 还支持动态调用函数。

在控制台执行该命令,可以在不修改代码,不重新编译的情况下,修改界面上的视图。

例如:动态从contentView上移除label

po cell.contentView.subviews

<__NSArrayM 0x60800005f5f0>(

<UILabel: 0x7f91f4f18c90; frame = (5 5; 300 25); text = '2 - Drawing index is top ...'; userInteractionEnabled = NO; tag = 1; layer = <_UILabelLayer: 0x60800009ff40>>,

<UIImageView: 0x7f91f4d20050; frame = (105 20; 85 85); opaque = NO; userInteractionEnabled = NO; tag = 2; layer = <CALayer: 0x60000003ff60>>,

<UIImageView: 0x7f91f4f18f10; frame = (200 20; 85 85); opaque = NO; userInteractionEnabled = NO; tag = 3; layer = <CALayer: 0x608000039860>>

)

call [label removeFromSuperview]
po cell.contentView.subviews

<__NSArrayM 0x600000246de0>(

<UIImageView: 0x7f91f4d20050; frame = (105 20; 85 85); opaque = NO; userInteractionEnabled = NO; tag = 2; layer = <CALayer: 0x60000003ff60>>,

<UIImageView: 0x7f91f4f18f10; frame = (200 20; 85 85); opaque = NO; userInteractionEnabled = NO; tag = 3; layer = <CALayer: 0x608000039860>>

)

5.bt命令

bt 命令 可以打印出线程的堆栈信息,该信息比左侧的Debug Navigator 看到的还要详细一些。

bt all 命令是打印所有线程的堆栈信息。

6.p/t 命令

二进制打印

7. x 命令

打印内存数据,可接 一个对象 (eg: x person) 等价于 memory read (eg: memory read person)

  • x/4gx 命令

x:表示打印内存数据

4:表示打印4段地址的数据

g:表示打印的格式,苹果是小端模式,阅读时需要从后往前读,用g格式后可以调整为阅读格式

x:16位16进制值的数据组成一个值

  • x/4gw 命令

x:表示打印内存数据

4:表示打印4段地址的数据

g:表示打印的格式,苹果是小端模式,阅读时需要从后往前读,用g格式后可以调整为阅读格式

w:8位16进制值的数据组成一个值

8.image 命令

image list: 读取内存中整个的镜像文件

命令可以列出当前App中的所有module。

除了 image list 还有 image addimage lookup等命令。

当遇到crash 时,查看线程栈,只能看到栈帧的地址,使用 image lookup –address 地址 可以方便的定位到这个地址对应的代码行。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值