iOS常用除錯方法之靜態分析詳解

2022-09-21 09:00:12 字數 1556 閱讀 3386

前言

在ios專案開發過程中,常用到靜態分析(analyze)、斷點(breakpoint)和控制台(console)進行**除錯。本篇文章介紹xcode常用除錯方法之」靜態分析「。

****360奇舞團qishare團程式設計客棧隊投稿。

一、簡介

xcode的靜態分析功能是在程式未執行的情況下,對**的上下文語義、語法、和記憶體情況進行分析,可以檢測出**潛在的文字本地化問題(localizability issue)、邏輯問題(logic error)、記憶體問題(memery error)、資料問題(dead store)和語法問題(core foundation/objective-c)等。功能入口在xcode選單欄

-> product -> analyze(comzcgifcbmand+shift+b)。圖示如下:

二、文字本地化問題

當工程target -> build settings -> static analyzer下的missing localizability設定為yes時,使用analyze功能後可以發現一些控制項會提示文字本地化問題user-facing text should use localized string macro。圖示如下:

按照提示,使用nslocalizedstring(>, )修飾文字即可修復,圖示如下:

或者,將missing localizabi程式設計客棧lity設定為no也可以。圖示如下:

三、邏輯問題

使用analyze可以分析出來**中潛在的邏輯問題。比如直接使用nsnumber的物件作為條件時,會得到提示converting a pointer value of type 'nsnumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolvalue。圖示如下:

根據提示,我們有兩種修改方式,圖示如下:

雖然這兩種修改方式都能解決問題,但不完全一樣,要注意其中的差別,選擇需要的使用。

四、記憶體問題

雖然arc幫助開發者管理了大部分的記憶體問題。但像cgimageref等c系列的**還需要開發者管理記憶體。這些記憶體問題在編譯過程中很難發現,但使用analyze可以給出相應的提示。圖示如下:

上圖中有兩處和記憶體相關的提示,開發者可以按照提示進行相應的修改。圖示如下:

五、資料問題

在編碼過程中,一些資料問題可以通過analyze很好的提示出來。比如下圖:

上圖中的string被提示在初始化後從未被用到。是因為第二部的賦值操作為string重新申請了記憶體。這時,開發者去掉第一步初始化方法即可。圖示如下:

六、語法問題

在重寫類的init方法時,有時會手誤寫出語法問題,這時可以使用analyze檢測出問題。圖示如下:

根據提示自己檢查可以知道是if語句寫錯了,多了乙個=。修改如下:

總結上述幾部分內容只是對analyze功能的舉例,其實際能檢測出的問題會更多。另外,analyze也有自己的侷限性,其檢查結果也只是輔助開發者查詢問題,真正優化**需要開發者更多的技術經驗。

本文標題: ios常用除錯方法之靜態分析詳解

本文位址:

ios開發之 除錯方法

在開發專案的工程中,肯定會遇到各種各樣的bug,且大多數的bug都和自己有關 那麼在和bug鬥智鬥勇的過程中,如果能快速準確的一擊斃命呢,這個時候充分利用斷點除錯的優勢,可以讓我們能更加快速的定位bug,進而解決掉。如圖1 以上就是打斷點的基本操作。這是建立,再次點選就是臨時取消這個斷點,注意不是刪...

IOS逆向分析之Xcode動態除錯APP

1.一台蘋果越獄手機。3.在 cydia 上安裝 openssh,用來登了越獄手機。5.登入越獄手機,預設密碼 alpine 如果是從非越獄的匯出來的 ipa 檔案再安裝進越獄手機的,需要輸入賬號和密碼才能執行,而輸入賬號密碼需要原來手機的驗證碼,如果沒有驗證碼輸入框,驗證碼是在輸入完密碼後接著輸入...

iOS效能調優之Analyze靜態分析

目前關於ios效能優化的教程較少,決定寫乙個 ios效能調優系列 主要關注與記憶體洩漏 效能優化 流量和電量分析幾個方面。xcode已經提供了非常強大的效能調優工具,結合幾個第三方工具和一些技巧,進行效能優化非常簡單。第一篇先寫寫最簡單的,analyze靜態分析。analyze主要分析以下四種問題 ...