Xcode除錯技巧之:LLDB

weixin_34293059發表於2018-12-07

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行

相關文章