- 內(nèi)存泄漏示例
- 倆種打開方式
- 觀察BlockView和MemoryLeakControl數(shù)量為2,發(fā)生內(nèi)存泄漏
- 點(diǎn)擊圖表中的MemoryViewController一屋,可以看到有Block持有控制器
-
點(diǎn)擊Block, 可以獲取到內(nèi)存地址,Backtrace可以通過Malloc Stack Logging打開
- 打開后定位相關(guān)方法
- 也可以dis -s 地址查看
作用是用來反匯編某個(gè)地址所對(duì)應(yīng)符號(hào)信息以及開始一部分的匯編實(shí)現(xiàn)综液,這里加16的意思是因?yàn)锽lock對(duì)象的內(nèi)部偏移16個(gè)字節(jié)的位置就是Block對(duì)象所保存的執(zhí)行代碼的函數(shù)地址
(lldb) dis -s *(void**)(0x7fc56a06fd50+16)
TestOC`__35-[MemoryLeakController viewDidLoad]_block_invoke:
0x100830b00 <+0>: pushq %rbp
0x100830b01 <+1>: movq %rsp, %rbp
0x100830b04 <+4>: subq $0x40, %rsp
0x100830b08 <+8>: movq %rdi, -0x8(%rbp)
0x100830b0c <+12>: movq %rdi, %rax
0x100830b0f <+15>: movq $0x0, -0x10(%rbp)
0x100830b17 <+23>: leaq -0x10(%rbp), %rcx
0x100830b1b <+27>: movq %rdi, -0x20(%rbp)