一、斷點命令
1、設置斷點,現用斷點卡住程序,然后在輸入
breakpoint set --file 文件名 --line 行數
br s -f 文件名 -l 行數
b 文件名:行數
上面三種方式均可設置文件行斷點
設置所以方法斷點:
breakpoint set --selector 方法名
br s -S 方法名
以上兩種方式均可
2、查看斷點:
breakpoint list
br l
會出來一個斷點詳細信息,每個斷點后面都有關于斷點的描述,
使用breakpoint set設置的斷點是不顯示在導航面板中的
3、刪除斷點
breakpoint delete 斷點編號
br del 斷點編號
4、單步進入
thread step-in
step
s
5、單步跳過
thread step-over
next
n
6、繼續運行
thread continue
continue
c
每個功能均有多個命令可以實現,依次為簡寫,同時這些命令也均可以通過工具欄實現
二、觀察點命令
觀察點命令是在程序中對于某個要觀察的變量設置一個觀察點,當這個變量變化的時候程序就會掛起,與斷點很相似,觸發條件不同而已
1、設置觀察點
watchpoint set variable 變量名
wa s v b
2、查看觀察點
watchpoint list
watch l
3、刪除觀察點
watchpoint delete 觀察點編號(list里面的編號)
三、查看變量和計算表達式命令
1、查看當前棧幀的所有本地變量
frame variable
fr v
查看某個具體變量
frame variable 變量名
fr v 變量名
p 變量名
2、查看全局變量,只能查到在當前棧中使用到全局變量
target variable
ta v
查看某個具體變量
target variable 變量名
ta v 變量名
3、計算基本數據類型表達式
expr (int)i*i
expr i*i
print i*i
p i*i
4、計算對象數據類型表達式
expr -o --((Note *)self.listData[0]).date
po ((Note *)self.listData[0])date
從數組self.listData中取得第一個元素,做一下強制類型轉換,然后調用date屬性,然后會輸出該屬性的值
三、斷言
NSAssert(NO,@"duan'yan");第一個參數數布爾表達式,第二個是描述信息,參數后面的是格式化desc描述信息的,當布爾表達式為NO時會拋出異常,并且輸出拋出異常的位置,例如:*** Assertion failure in -[ViewController clickBtn], /Users/zhaojing/Desktop/測試項目集合/BYTestSDWebImage/BYTestSDWebImage/ViewController.m:43
四、異常棧報告分析
1、當異常發生時,程序會拋出異常,會輸出到異常窗口,窗口中的****First throw call stack:后面的內容就是異常棧信息。
2、每條棧信息構成:序列號 ? + ?框架 ?+ 方法所屬類名 ?+ ?方法名 ?+ 調用方法編譯之后的代碼偏移量
前面序列號 :是棧輸出序列號,序列號越大代表越早被調用
序列號后面是調用方法所屬框架
在后面就是調用方法所屬的類名
調用的方法名
調用方法編譯后的代碼偏移量,很多人以為是行號,其實不是,對我們基本沒用
棧信息是要從下往上看,程序運行的過程是從下面的方法調用項目的方法
在程序運行過程中,棧信息可能很長,我們不需要每一行都去看,只需關注自己的工程代碼,先找到自己工程中的方法,找到那條語句看看是不是有問題,前提是別人提供給我們的框架是正確的。
五、查看設備上的應用程序
選擇window----->Devices進入到設備頁面,左邊面板中選擇設備,右邊會顯示設備的相關信息,
在Installed Apps中顯示的是已經安裝到設備上的應用,在這可以通過+和-安裝和刪除設備,在旁邊設置按鈕Show Container菜單是用于查看應用的沙箱目錄(但是我測試沒看到,只能下載來看)
Download Container 可以講設備中的沙箱目錄復制到當前的開發電腦上來,右擊該文件,選擇顯示包內容,可以看到沙箱里面的內容
點擊View Device Logs按鈕,可以貸款設備日志界面,可以查看設備的信息,右欄會出現設備日志信息,左欄包括進程、類型和日志時間,如果是crash,代表應用崩潰,點擊某個日志信息,右欄會顯示詳細的日志描述信息,其中包括跟蹤異常棧的信息輸出。