iOS除錯程式

2021-08-01 09:53:27 字數 3137 閱讀 8156

一、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...