国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

iOS開(kāi)發(fā)之Xcode常用調(diào)試(Debug)技巧

這篇具有很好參考價(jià)值的文章主要介紹了iOS開(kāi)發(fā)之Xcode常用調(diào)試(Debug)技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、Xcode 調(diào)試技巧之:NSLog

上面也提到了,在我們?nèi)粘5拈_(kāi)發(fā)過(guò)程中最常?的Debug方式就是打Log。而在OC語(yǔ)言中,打Log是采用NSLog方 法。但是NSLog效率低下,具體原因可以看這篇博客( NSLog效率低下的原因及嘗試lldb斷點(diǎn)打印Log)。所 以在平時(shí)的開(kāi)發(fā)過(guò)程中,能不打Log就不打Log。實(shí)在想打Log網(wǎng)上也有對(duì)NSLog的一些優(yōu)化方法,可以閱讀王巍 的《宏定義的黑魔法 - 宏菜?起?手冊(cè)》如下代碼便出自其中

#ifdef DEBUG
#define NSLog(format, ...) printf("[%s] %s [%d] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(format, ...)
#endif

另外在使用NSLog的時(shí)候應(yīng)當(dāng)注意,release版本中應(yīng)該要去掉NSLog。

2、Xcode調(diào)試技巧之:LLDB

LLDB全稱Low Level Debugger,并不是低水平的調(diào)試器,而是輕量級(jí)的高性能調(diào)試器,默認(rèn)內(nèi)置于Xcode中。LLDBDebug 在編譯后就是一個(gè) Macho的可執(zhí)行文件,也可理解為 鏡像文件image并不是圖像的意思,而是代表鏡像。這里跟上我們自己的工程名,即用image定位尋址才是尋找我們自己的代碼。

1. p 和po 命令

p 命令是 print 的縮寫(xiě),查看基本數(shù)據(jù)類型的值,如果使用p命令查看的事對(duì)象,那么只會(huì)返回對(duì)象的額指針地址,p 命令后面除了可以接收變量,常量,還可以接 表達(dá)式。

po:print object的縮寫(xiě),表示顯示對(duì)象的文本描述,如果對(duì)象不存在則打印nil。

?p 和 po 都不可以使用宏?

簡(jiǎn)單的打印一個(gè)對(duì)象我們就不說(shuō)了,我們來(lái)說(shuō)說(shuō)特殊的應(yīng)用場(chǎng)景吧!

應(yīng)用場(chǎng)景:你想知道一個(gè)視圖包含了哪些子視圖。當(dāng)然你可以循環(huán)打印子視圖,但是下面只需要一個(gè)命令即可解決。

輸出視圖層級(jí)關(guān)系(這是一個(gè)被隱藏的命令): `po [[self view] recursiveDescription] `

2. call:執(zhí)行一段代碼

call NSLog(@"%@", @"yang")

3. expr:動(dòng)態(tài)執(zhí)行指定表達(dá)式
expr i = 101
輸出: (int)$0 = 101

4. bt:打印當(dāng)前線程堆棧信息
如果要打印所以線程堆棧信息,使用:bt all即可。
使用bt 命令可以查看函數(shù)調(diào)用堆棧,使用bt all 可以查看所有堆棧信息,然后使用frame select 即可查看對(duì)應(yīng)函數(shù)詳細(xì),同時(shí)配合up和down命令追蹤函數(shù)的調(diào)用和被調(diào)用關(guān)系。演示如下:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

5. image:常用來(lái)尋找棧地址對(duì)應(yīng)代碼位置:
舉個(gè)栗子:
應(yīng)用場(chǎng)景數(shù)組越界模擬代碼,報(bào)錯(cuò)后執(zhí)行:image lookup --address 0x00000001035230ae
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

** 6. x命令
x命令是查看地址在內(nèi)存的情況,一般查看對(duì)象地址和對(duì)象的屬性地址
x/4gx命令:打印4個(gè)16進(jìn)制地址。
x/8gx命令:打印8個(gè)16進(jìn)制地址。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

關(guān)于LLDB 其他使用可以學(xué)習(xí):
iOS之Xcode斷點(diǎn)調(diào)試
LLDB官網(wǎng)

三、Xcode調(diào)試技巧之:斷點(diǎn)調(diào)試(breakpoint)

Xcode斷點(diǎn)分以下幾種:

Xcode工具欄切換到斷點(diǎn)處,選擇左下角 + 號(hào):
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
可以看到斷點(diǎn)類型:

  1. Swift Error Breakpoint
  2. Exception Breakpoint
  3. OpenGL ES Error Breakpoint
  4. Symbolic Breakpoint
  5. Constraint Error Breakpoint
  6. Test Failure Breakpoint

3.1 Breakpoint(斷點(diǎn))調(diào)試

看這6種斷點(diǎn)之前,先來(lái)介紹一下,如何編輯斷點(diǎn):
根據(jù)需要加斷點(diǎn),鼠標(biāo)在斷點(diǎn)上右鍵:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
可以看到上圖五種類型:

  1. Edit Breakpoint
  2. Disable Breakpoint
  3. Disable Other Breakpoints
  4. Delete Breakpoint
  5. Reveal in Breakpoint Navigator
1. Edit Breakpoint

點(diǎn)擊Edit Breakpoint后(使用比較頻繁):
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
可以看到有5種操作條件:

  • name (斷點(diǎn)名稱)
  • Condition(條件)
  • Ignore(忽略)
  • Action(執(zhí)行語(yǔ)句)
  • Options

(1) Name 和 Condition

Condition可以輸入一個(gè)條件表達(dá)式,如果條件滿足了,就會(huì)觸發(fā)斷點(diǎn),例如:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
使用比較頻繁,往往在處理數(shù)據(jù)時(shí)for循環(huán)找到指定對(duì)象時(shí)用到,當(dāng)然還有其他用法,因場(chǎng)景而異。

(2) Ignore

設(shè)置忽略斷點(diǎn)的次數(shù),比如設(shè)置2,在上述例子中,會(huì)忽略前兩次次for循環(huán),而在第三次時(shí)觸發(fā)斷點(diǎn)
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

(3) action

點(diǎn)擊 Action
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
默認(rèn)是Debugger Command (會(huì)記憶你上次選擇的類型),點(diǎn)擊會(huì)有6種類型。

  1. AppleScript
  2. Gapture GPU Workload
  3. Debugger Command
  4. Log Message
  5. Shell Command
  6. Sound

功能Debugger Command和Log Message比較常用

1.AppleScript

會(huì)在斷點(diǎn)觸發(fā)的時(shí)候執(zhí)行Mac OS X內(nèi)置的一種功能強(qiáng)大的腳本語(yǔ)言。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

2.Gapture GPU Gapture GPU Workload

調(diào)試跟GPU相關(guān)的問(wèn)題:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

3.Debugger Command

可以輸入LLDB命令:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos
我們常常使用expr(expression簡(jiǎn)寫(xiě),兩種寫(xiě)法lldb都會(huì)識(shí)別)在斷點(diǎn)處強(qiáng)行修改變量值
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

4.Log Message

%B輸出斷點(diǎn)的名稱

%H輸出斷點(diǎn)執(zhí)行的次數(shù)

@@之間輸入表達(dá)式,比如(@5*2@ 會(huì)輸出結(jié)果10,也可以輸出對(duì)象結(jié)果)

勾選Log message to console,會(huì)在控制臺(tái)輸出結(jié)果。
勾選Speak message,不會(huì)在控制臺(tái)輸出,但是會(huì)朗讀處結(jié)果(用的少)。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

5.Shell Command

點(diǎn)擊Choose,選擇寫(xiě)好的腳本文件,觸發(fā)斷點(diǎn)時(shí)會(huì)執(zhí)行所選擇的腳本
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

6.Sound

會(huì)在斷點(diǎn)處觸發(fā)聲音,如下圖,有14中聲音。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

(4) Options

勾選Automatically continue after evaluating actions之后程序會(huì)在斷點(diǎn)產(chǎn)生后繼續(xù)運(yùn)行。一般用于斷點(diǎn)處修改值,或者輸出斷點(diǎn)信息時(shí)會(huì)勾選此選項(xiàng),運(yùn)行時(shí),斷點(diǎn)生效,但是斷點(diǎn)處不停。如圖,執(zhí)行for循環(huán)結(jié)束,斷點(diǎn)處并沒(méi)有停留。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

3.2 Disable Breakpoint

點(diǎn)擊Disable Breakpoint后會(huì)使斷點(diǎn)失效,但斷點(diǎn)依然保留,顏色會(huì)邊淺色(快速使斷點(diǎn)失效方法:鼠標(biāo)單擊斷點(diǎn))。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

再次鼠標(biāo)在斷點(diǎn)處右鍵:
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

點(diǎn)擊Enable Breakpoint斷點(diǎn)重新生效(快速使斷點(diǎn)生效方法:鼠標(biāo)單擊斷點(diǎn))。

3.3 Disable Other Breakpoints

點(diǎn)擊Disable Other Breakpoints 快速將其他斷點(diǎn)設(shè)為無(wú)效狀態(tài)。這個(gè)蠻好用的
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

3.4 Delete Breakpoint

點(diǎn)擊Delete Breakpoint刪除斷點(diǎn)(快速刪除斷點(diǎn)方法:鼠標(biāo)左建按住斷點(diǎn)拖走松開(kāi)鼠標(biāo),即刪除斷點(diǎn))。
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

3.5 Reveal in Breakpoint Navigator

點(diǎn)擊Reveal in Breakpoint Navigator,會(huì)切換到導(dǎo)航斷點(diǎn)處
xcode怎么調(diào)試,iOS技術(shù)知識(shí)積累,ios,xcode,macos

參考資料

iOS之Xcode斷點(diǎn)調(diào)試
LLDB官網(wǎng)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758457.html

到了這里,關(guān)于iOS開(kāi)發(fā)之Xcode常用調(diào)試(Debug)技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 蘋(píng)果最新系統(tǒng)iOS 17的調(diào)試和適配方法 - Xcode 14.3.1 真機(jī)調(diào)試指南

    蘋(píng)果最新系統(tǒng)iOS 17的調(diào)試和適配方法 - Xcode 14.3.1 真機(jī)調(diào)試指南

    最近蘋(píng)果發(fā)布了iOS 17作為其最新操作系統(tǒng)版本,作為開(kāi)發(fā)者,你可能需要了解如何在Xcode 14.3.1中進(jìn)行真機(jī)調(diào)試和適配。本文將為你詳細(xì)介紹步驟和注意事項(xiàng)。 I. 檢查Xcode版本 在開(kāi)始之前,確保你已經(jīng)安裝了Xcode 14.3.1或更高版本。你可以在Xcode菜單中選擇\\\"關(guān)于Xcode\\\"來(lái)查看具體版

    2024年01月17日
    瀏覽(27)
  • 手機(jī)升級(jí)到iOS15.8后無(wú)法在xcode(14.2)上真機(jī)調(diào)試

    手機(jī)升級(jí)到iOS15.8后無(wú)法在xcode(14.2)上真機(jī)調(diào)試

    ?之前手機(jī)是iOS14.2的系統(tǒng),在xcode上進(jìn)行真機(jī)測(cè)試運(yùn)行良好,因?yàn)橄胍褂肵code的Instruments功能,今天將系統(tǒng)更新到了iOS15.8? ?,結(jié)果崩了 說(shuō)是Xcode和手機(jī)系統(tǒng)不兼容不能進(jìn)行真機(jī)測(cè)試。在網(wǎng)上查了好些方法,靠譜的就是下載相關(guān)版本的真機(jī)包。但是~~ 找了一圈發(fā)現(xiàn)目前并沒(méi)

    2024年02月04日
    瀏覽(34)
  • IOS開(kāi)發(fā)-XCode14介紹與入門(mén)

    IOS開(kāi)發(fā)-XCode14介紹與入門(mén)

    iOS開(kāi)發(fā)工具一直有個(gè)毛病,就是新版本的開(kāi)發(fā)工具的總會(huì)有一些奇奇怪怪的bug。比如在我的Mac-Pro(2.3 GHz 八核Intel Core i9)中iOS stimulator就無(wú)法使用(MyMac是可用的)。但是真機(jī)就可以正常使用。也不知道是XCODE14是只對(duì)本家M系芯片的優(yōu)化導(dǎo)致Intel用不了還是咋的,很是苦惱。

    2024年02月13日
    瀏覽(26)
  • iOS開(kāi)發(fā)Swift-1-Xcode創(chuàng)建項(xiàng)目

    iOS開(kāi)發(fā)Swift-1-Xcode創(chuàng)建項(xiàng)目

    1.創(chuàng)建項(xiàng)目 雙擊Xcode App,選擇Create a new Xcode project。 ?選擇創(chuàng)建一個(gè)iOS普通的App項(xiàng)目。選擇Single View App,點(diǎn)擊Next。 ?填寫(xiě)項(xiàng)目名,組織名稱等,點(diǎn)擊next。 ?選擇好文件的存儲(chǔ)路徑,點(diǎn)擊create。 ?2.為前端添加組件 點(diǎn)擊Main,選中View,在右下角show the Object library中找到label組件,

    2024年02月10日
    瀏覽(24)
  • Flutter ios真機(jī)調(diào)試報(bào)錯(cuò)Xcode couldn‘t find any iOS App Development provisioning profiles

    Flutter ios真機(jī)調(diào)試報(bào)錯(cuò)Xcode couldn‘t find any iOS App Development provisioning profiles

    Could not build the precompiled application for the device. Error (Xcode): No profiles for \\\'com.example.jiniu\\\' were found: Xcode couldn\\\'t find any iOS App Development provisioning profiles matching \\\'com.example.jiniu\\\'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild. 翻譯

    2024年02月16日
    瀏覽(51)
  • MacOS 14 系統(tǒng) XCode15、 Flutter 開(kāi)發(fā) IOS

    MacOS 14 系統(tǒng) XCode15、 Flutter 開(kāi)發(fā) IOS

    MacOS14 Sonoma 安裝 Flutter 開(kāi)發(fā)環(huán)境 MacOS 系統(tǒng) Flutter開(kāi)發(fā)Android 環(huán)境配置 MacOS 系統(tǒng) Flutter開(kāi)發(fā)IOS 環(huán)境配置??????? 前面我們已經(jīng)在MacOS14 M3芯片上安裝好 Flutter環(huán)境,包括開(kāi)發(fā)工具 VsCode 、Android Stuiod,那么flutter如何開(kāi)發(fā)IOS呢? 我們知道IOS開(kāi)發(fā)語(yǔ)言為 objcet-c或者 swift,F(xiàn)lutter是

    2024年02月03日
    瀏覽(23)
  • [游戲開(kāi)發(fā)][Unity] 打包Xcode工程模擬器+真機(jī)調(diào)試

    [游戲開(kāi)發(fā)][Unity] 打包Xcode工程模擬器+真機(jī)調(diào)試

    Xcode版本:Xcode14 蘋(píng)果開(kāi)發(fā)者賬號(hào)、相關(guān)設(shè)備cer證書(shū)、開(kāi)發(fā)者證書(shū)、發(fā)布證書(shū) 賬號(hào)分三類,個(gè)人,公司,企業(yè),價(jià)格99/99/299美金 新注冊(cè)賬號(hào)的基本設(shè)置按網(wǎng)上的教程來(lái)就行 我們公司是企業(yè)賬號(hào),我的蘋(píng)果開(kāi)發(fā)者賬號(hào)是公司一個(gè)User,這個(gè)和個(gè)人開(kāi)發(fā)者不同。 賬號(hào)還是非常重要

    2024年02月15日
    瀏覽(27)
  • mac電腦 安裝 ios開(kāi)發(fā)工具xcode步驟 以及新建ios項(xiàng)目

    ????????在Mac電腦上安裝Xcode,蘋(píng)果公司的官方iOS開(kāi)發(fā)工具,以及新建iOS項(xiàng)目,以下是詳細(xì)步驟: ????????安裝Xcode 1. 打開(kāi)Mac上的App Store。 2. 在搜索欄中輸入“Xcode”。 3. 從搜索結(jié)果中找到Xcode,點(diǎn)擊“獲取”按鈕。 4. 輸入您的Apple ID和密碼,然后點(diǎn)擊“安裝”按鈕。

    2024年02月20日
    瀏覽(25)
  • iOS開(kāi)發(fā)進(jìn)階(六):Xcode14 使用信號(hào)量造成線程優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題修復(fù)

    iOS開(kāi)發(fā)進(jìn)階(六):Xcode14 使用信號(hào)量造成線程優(yōu)先級(jí)反轉(zhuǎn)問(wèn)題修復(fù)

    應(yīng)用 Xcode 14.1 進(jìn)行項(xiàng)目編譯時(shí),遇到以下錯(cuò)誤提示,導(dǎo)致APP線程暫停。 以上問(wèn)題是由于iOS信號(hào)量造成線程優(yōu)先級(jí)反轉(zhuǎn),在并發(fā)隊(duì)列使用信號(hào)量會(huì)可能會(huì)造成線程優(yōu)先級(jí)反轉(zhuǎn)。 經(jīng)過(guò)查詢資料,發(fā)現(xiàn)是在 XCode14 上增加了工具,比如 : Thread Performance Checker ( XCode14 上默認(rèn)開(kāi)啟的)

    2024年02月01日
    瀏覽(38)
  • iPhone開(kāi)發(fā)--Xcode15下載iOS 17.0.1 Simulator Runtime失敗解決方案

    iPhone開(kāi)發(fā)--Xcode15下載iOS 17.0.1 Simulator Runtime失敗解決方案

    爆句粗口,升級(jí)后公司網(wǎng)絡(luò)下載iOS 17.0.1 Simulator Runtime一直出錯(cuò),每次出錯(cuò)后都得重新開(kāi)始下載,oh,f**k。上一次在在家里的網(wǎng)絡(luò)升級(jí)成功。 進(jìn)入網(wǎng)址:https://developer.apple.com/download/all/ 之后找到iOS 17.0.1 Simulator Runtime,點(diǎn)擊下載,這個(gè)通過(guò)瀏覽器下載。 之后在命令行運(yùn)行下面的

    2024年02月08日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包