文章目录
  1. 1. 3.不同的崩溃类型

[TOC]

  1. 断点类型分为几种?

异常断点 `Exception breakpoint`
符号断点  `Symbolic breakpoint`
判断断点  
共享断点
  1. LLDB控制台

####1.打印标量

  • p
    1
    p  (CGPoint) self.view.center

####2.打印寄存器

1
register read

####3.输出回溯信息的原因,通常是由于出现SIGABRT,其他也可以,示例如图
@bt指令

1
bt

####模拟器内容 和 真机 寄存器展示有所不同
模拟器 关注eax . ecx . esi真机 关注r0-r4`

打印单个寄存器

1
register read ecx

打印多个寄存器

1
register read eax ecx

3.不同的崩溃类型

###调试 EXC_BAD_ACCESS 技巧

设置NSZombieEnabled
Xcode9.2如图
@僵尸对象的设置

如,代码如下
@示例代码

不设置僵尸对象,控制台打印如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2017-12-14 09:35:38.331104+0800 OCSWIFT[2044:43076] -[UIViewControllerBuiltinTransitionViewAnimator count]: unrecognized selector sent to instance 0x60800025cd70
2017-12-14 09:35:38.342676+0800 OCSWIFT[2044:43076] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewControllerBuiltinTransitionViewAnimator count]: unrecognized selector sent to instance 0x60800025cd70'
*** First throw call stack:
(
0 CoreFoundation 0x00000001014c712b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000100b63f41 objc_exception_throw + 48
2 CoreFoundation 0x0000000101548024 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x0000000101449f78 ___forwarding___ + 1432
4 CoreFoundation 0x0000000101449958 _CF_forwarding_prep_0 + 120
5 OCSWIFT 0x000000010015ec74 -[TableViewController tableView:numberOfRowsInSection:] + 100
6 UIKit 0x0000000101e21047 -[_UIFilteredDataSource tableView:numberOfRowsInSection:] + 88
7 UIKit 0x0000000101ab3b4c -[UITableView _numberOfRowsInSection:] + 62
8 UIKit 0x0000000101d660e1 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2389
9 UIKit 0x0000000101d6c5ab -[UITableViewRowData rectForFooterInSection:heightCanBeGuessed:] + 487
10 UIKit 0x0000000101d6c711 -[UITableViewRowData heightForTable] + 61
11 UIKit 0x0000000101a61a65 -[UITableView _updateContentSize] + 372
12 UIKit 0x0000000101a8f4cd -[UITableView _rectChangedWithNewSize:oldSize:] + 942
13 UIKit 0x0000000101a8fd55 -[UITableView setFrame:] + 319
14 UIKit 0x00000001027042f2 -[UIViewControllerBuiltinTransitionViewAnimator animateTransition:] + 919
15 UIKit 0x0000000101abeac0 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 3003
16 UIKit 0x0000000101950d59 _runAfterCACommitDeferredBlocks + 318
17 UIKit 0x000000010193fbb1 _cleanUpAfterCAFlushAndRunDeferredBlocks + 280
18 UIKit 0x000000010196f0e0 _afterCACommitHandler + 137
19 CoreFoundation 0x0000000101469c07 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
20 CoreFoundation 0x0000000101469b5e __CFRunLoopDoObservers + 430
21 CoreFoundation 0x000000010144e124 __CFRunLoopRun + 1572
22 CoreFoundation 0x000000010144d889 CFRunLoopRunSpecific + 409
23 GraphicsServices 0x0000000106f139c6 GSEventRunModal + 62
24 UIKit 0x00000001019455d6 UIApplicationMain + 159
25 OCSWIFT 0x000000010015e7ff main + 111
26 libdyld.dylib 0x0000000105925d81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

无法直观的定位错误,崩溃现在main函数中,

设置了僵尸对象后
崩溃如下

@直接定位到具体奔溃的位置

###EXC_ARITHMETIC

除以零收到

###SIGSEGV

段错误信号(SIGSEGV) 是操作系统产生的一个更严重的问题。当硬件出现错误、的问不可读的内存地址或向受保护的内存地址写人数据时,就会发生这个错误。

###SIGABRT

中止信号 : SIGANL ABORT
使用bt查看回溯信息

###SIGILL

非法指令信号 SIGNAL ILLEGAL INSTRUCTION
执行非法指令是指,将函数指针传给另外一个函数时,该函数指针由于某种原因是坏的.指向了一段已经释放的内存或是一个数据段。有时你收到的是EXC_BAD_工NSTRUCTION 而不是SIGILL ,虽然它们是一回事,不过EXC_* 等同于此信号不依赖、体系结构。

###看门狗超时
固定错误Ox8badfOOd 同步网络阻塞主线程

文章目录
  1. 1. 3.不同的崩溃类型