一、ios開發如何除錯程式
1、根據模擬器控制台報錯資訊找出問題所在
錯誤**:
#import "viewcontroller.h"
@inte***ce viewcontroller ()
@property (nonatomic, strong)nsmutablearray *arr;
@end
@implementation viewcontroller
- (nsarray *)arr
return _arr;
}- (void)viewdidload
- (void)rundemo
在模擬器上的報錯資訊如下:
注意:若在真機上除錯程式報錯,則只是顯示錯誤資訊,而不顯示程式詳細的呼叫堆疊的內容。
2、檢視檢視的層次結構,如檢視遮擋以及自動布局的錯誤等
3、設定斷點
斷點除錯主要是用於檢視執行到該斷點時所有變數的值,具有如下幾個功能:
單步除錯:每次只執行一行**,如果呼叫了方法,程式不會跟蹤方法的執行**
步入除錯:在進行單步除錯時,如果需要跟蹤某個方法執行的細節,可以使用步入除錯檢視方法執行的細節。
步出除錯:當通過步入除錯跟蹤某個方法時,可以通過步出除錯結束該方法,返回到該方法的呼叫環境
4、lldb
5、instrument:time profile / core animation / 記憶體洩漏
5.1、靜態記憶體分析
記憶體分析:主要是檢測在mrc環境下有沒有記憶體洩漏(建立的物件,使用完畢沒有被釋放)的問題。在arc環境下,迴圈引用、corefoundation框架等
概念:不執行程式,直接對**語法進行檢測,分析是否有記憶體洩露 ,不僅僅是只檢測記憶體,而是檢測**邏輯
優點:分析速度快,可以快速對所有的**進行記憶體分析,查詢出來對應的記憶體洩露
缺點:不一定準確,但是基本準確。根據語法上下文來分析你的程式到底有沒有記憶體洩漏
注意:如果提示有記憶體洩露,一定要根據上下的語法分析**是否有問題。
5.2、動態記憶體分析
概念:真正執行起來程式,並且借助instrument(效能除錯工具)工具來分析**是否有某些地方產生了記憶體洩露
優點:分析非常準確,並且只要分析出來有記憶體洩露,基本可以斷定**一定有問題
缺點:需 一處一處來分析,並不能對全域性的**進行分析.
注意:動態記憶體分析時最好使用真機,因為模擬器和電腦配置有關;在release模式下測試,因為**會進行精簡。
注意:在真實開發中,應該是靜態記憶體分析和動態記憶體分析結合的方式來分析記憶體。特別是arc環境下 的corefoundation框架的東西,使用靜態記憶體分析先分析,之後使用動態記憶體分析再來分析一次。
二、程式上架後如何收集一些錯誤資訊
除了bugly還有許多第三方框架做錯誤收集處理,如友盟。
作為乙個ios程式設計師每天都要看崩潰日誌
三、處理程式中經常使用nslog除錯輸出的技巧
1、建立乙個pch檔案
2、定義nslog的巨集
//保證ifdef中的巨集定義只會在oc的**中被引用
#ifdef __objc__
//方法一:讓巨集定義的nslog在除錯的時候可以使用,在發布時不會被使用
#ifdef debug
//#define nslog(...) nslog(__va_args__)
#define nslog(fmt, ...) nslog((@"%s [line %d]" fmt), __pretty_function__, __line__, ##__va_args__)
#else
#define nslog(...)
#endif
//方法二 避免nslog的缺陷,因為有時候列印資料時會有缺失
#if debug
#define nslogs(format, ...) nslogs(stderr, "%s:%zd\t%s\n", [[[nsstring stringwithutf8string: __file__] lastpathcomponent] utf8string], __line__, [[nsstring stringwithformat: format, ## __va_args__] utf8string]); /**《輸出語句*/
#else
#define nslogs(fmt, ...)
#endif
#ifndef prefixheader_pch
#define prefixheader_pch
/* pch作用:
1.存放公用巨集 2.存放公用標頭檔案 3.自定義log、
*/#endif /* prefixheader_pch */
3、修改專案是否處於除錯還是發布的狀態即可看到效果 php 除錯程式
在執行時必須知道某個變數為何值。我是這樣做的,建立一檔案debug.php,其內容如下 php php ob start session start echo pre echo 本頁得到的 get變數有 print r get echo 本頁得到的 post變數有 print r post echo...
GDB除錯程式
gdb的三個功能 1 啟動被除錯的程式 2 設定斷點 3 設定斷點之後可以檢查程式的狀態 1.編譯生成可執行檔案 注意 g 除錯選項 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設定斷點 break main 4.執行程式 run5.利用 更加豐富的 gd...
gdb除錯程式
除錯是每個程式設計師都會面臨的問題.如何提高程式設計師的除錯效率,更好更快地定位程式中的問題從而加快程式開發的進度,是大家共同面對的問題.可能windows使用者順口就會說出 用vc唄 它提供了設定斷點,單步跟蹤等的圖形介面,使除錯起來直觀易用.但linux使用者可能要生悶氣了 o 難道我們linu...