1、po:print object的缩写,表示显示对象的文本描述,如果对象不存在则打印nil
2、p:可以用来打印基本数据类型。
3、call:执行一段代码
call NSLog(@"%@",@"hello world");
4、expr:动态执行指定表达式
expr i = 3.14
输出:(int)$0 = 3.14
5、bt:打印当前线程堆栈信息
如果要打印所在线程堆栈信息,使用:bt all即可。
6、image:常用来寻找栈地址对应代码位置:
应用场景(数组越界)模拟代码:
NSArray *array = @[@"你",@"好",@"棒"];
NSLog(@"%@",array[3]);
错误信息如下:
*** Terminating app due to uncaught exception
'NSRangeException'
, reason:
'*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
*** First
throw
call stack:
(
0 CoreFoundation 0x000000010579454b __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00000001561f821e objc_exception_throw + 47
2 CoreFoundation 0x00000001087d1eeb -[__NSArrayI objectAtIndex:] + 153
3 BGMultimediaDemo 0x0000000104c25350 -[ViewController viewDidLoad] + 193
4 UIKit 0x0000000105d5306d -[UIViewController loadViewIfRequired] + 1245
......
......
......
21 BGMultimediaDemo 0x0000000104c35adf main + 111
22 libdyld.dylib 0x000000010857264e start + 1
23 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating
with
uncaught exception of type NSException
可能出现错误的地址:0x0000000104c25350 我们可以使用下面命令来找出错误代码的位置:
image lookup --address 0x0000000104c25350
执行命令后输出结果如下:
Address: BGMultimediaDemo[0x0000000100001450] (BGMultimediaDemo.__TEXT.__text + 184)
Summary: BGMultimediaDemo`-[ViewController viewDidLoad] + 188 at ViewController.m:15
从上面输出结果中可以看出,错误位置应该是ViewController.m文件中的15行
作者:MangoJ
链接:https://www.jianshu.com/p/5ae83965718c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。