1. 程式人生 > >Xcode Debug之新增斷點

Xcode Debug之新增斷點

1.新增全域性斷點(Add Exception Breakpoint)

通過新增全域性斷點,可以快速定位導致程式奔潰所在的程式碼行。
在Xcode 中找到Breakpoint navigator(也可以通過快捷鍵command + 7跳轉),在最下面點選加號,第一個就是:
新增全域性斷點1
這樣就添加了一個全域性斷點:
新增全域性斷點2
程式只要一奔潰,就會觸發該斷點,並定位到導致奔潰所在的程式碼行。

2.新增符號斷點(Add Symbolic Breakpoint)

Symbolic Breakpoint 是一種非常強大的斷點。
如上步驟選擇第二項:
新增符號斷點1
新增之後在Symbol一欄輸入viewDidLoad。

這樣一來,在程式中所有的viewDidLoad方法被呼叫時都會觸發斷點。

新增符號斷點2

當然,我們頁可以僅僅為特定的某個類的方法新增斷點。在Symbol一欄類輸入“[ClassName viewDidLoad]”(Objective-C)或“ClassName.viewDidLoad”(Swift)即可。

3.為斷點新增條件(Condition)

有時候我們可能會在某個迴圈中建立斷點,但一次又一次地點選continue知道我們想要的條件出現,顯然是一種非常低效的方式。好在Xcode為我們提供了條件斷點。

首先在下列程式碼中插入一個普通的斷點

條件斷點1

右鍵點選斷點,選擇Edit Breakpoint,在Condition一欄輸入i > 90

這裡寫圖片描述

這樣一來,只有當程式執行滿足條件之後才會觸發斷點了。

4.監控斷點(Watch)

我們除錯程式的大部分時候都是為了監控某個變數的變化,在程式碼中變量出現的地方新增斷點不僅累而且還可能漏掉,事後還得一個一個刪掉,實在很累。

我們可以通過為變數新增監控斷點來簡單地做到這一點。

找到變數第一次出現的地方,新增一個普通斷點,進入debug模式後在Variables View中右鍵變數,選擇Watch變數名。這樣每一次該變數都會觸發斷點告知我們。

監控斷點1

我們可以在Console中看到其變化。

監控斷點2

5.日誌資訊斷點

最常見的Debug方式應該就是NSLog或者println(swift)了。通常我們會通過這種方式來列印輸出各種例項資訊以檢測程式執行狀態。
但這一除錯方式也有很明顯的缺陷:

  • 無法在執行時新增
  • 新增數量過多之後干擾視線,又需要麻煩地刪除或註釋掉
  • 會編譯進App,在正式版本中需要關閉(當然我們可以通過巨集來判斷是否應該編譯,但這會增加額外的操作不是嗎)

所幸在Xcode中我們還有另外一種選項。
在如下程式碼中新增一個普通斷點,選擇Edit Breakpoint,然後點選Add Action,選擇Log Message,在輸入框中輸入 The number is:@[email protected]

日誌斷點1

執行效果如下圖所示:

日誌斷點2

這裡因為有日誌輸出,所以我們可以勾選上最下面的Automatically continue after evaluating actions,這樣這個斷點就只會安安靜靜為我們輸出日誌了。

相關推薦

Xcode Debug新增斷點

1.新增全域性斷點(Add Exception Breakpoint) 通過新增全域性斷點,可以快速定位導致程式奔潰所在的程式碼行。 在Xcode 中找到Breakpoint navigator(也可以通過快捷鍵command + 7跳轉),在最下面點選加號

iOS開發DebugXcode證書問題報錯

1、 確認下證書是不是開發證書,如果是釋出證書就會出現這樣的提示。 2、 證書失效了,去開發者中心重新生成一個。 3、 包識別符號不與描述檔案包含的包識別符號不一致,按照它的提示換一下就好了,最好不要點 Fix Issue,點完後 Xcode

xcode除錯斷點除錯及動態輸出

   在開發App的過程中,需要反覆的修改和優化我們的程式碼,特別是當程式出現bug,需要快速的找出錯誤的原因,進行修改,以保證程式的正確執行。 斷點除錯,是最常用最簡單的一種除錯方式,可以一步步跟蹤程式執行的流程,得到變數的值,快速的找到錯誤的原因。 1、斷點的基本操

使用Xcode-debug模式和release模式

哪裏 eas containe cin white ces item proc mman 在開發過程中,我們常常須要用到NSLog輸出一些信息,甚至有的開發過程。必須在控制臺查看輸出,有經驗的程序猿通過控制臺輸出就能知道整個數據交互的一個流程。可是一個

Xcode 9.0 新增功能大全

詳細 核心 kit 特定 beta ivar 當前 網絡調試 應用 Xcode是用於為Apple TV,Apple Watch,iPad,iPhone和Mac創建應用程序的完整開發人員工具集。Xcode開發環境采用tvOS SDK,watchOS SDK,iOS SDK和m

009-Ambari二次開發新增自定義元件Redis(二)

上一篇我們主要介紹了Ambari新增元件的答題流程並以REDIS為例說明了流程,本篇在上一篇的基礎上,進一步完善說明流程並介紹如何給元件新增metric 掃描二維碼,關注BearData,獲取最新文章 上篇中,我們已經制作出了redis的rpm包,並重新編譯了我們修改後的Ambar

008-Ambari二次開發新增自定義元件Redis(一)

Ambari目前支援的元件有HDFS、YARN、HBase、Hive、Pig、ZooKeeper、Sqoop、Storm、Flume、Tez、Oozie、Falcon、Storm、Altas、Knox、Spark、Ranger、Mahout、Kerberos等,已經涵蓋了從大資料應用的

車機開發新增自定義鍵

S700平臺即安卓5.1.1系統新增額外的自定義鍵值按鍵: 在Android的原生系統中鍵值預設情況下是92個,從0-91;一般情況下,這些鍵值是夠用的,但是如果想擴充的話,還是需要新增新的鍵值的;像我們做車機專案的,新增新按鍵鍵值太易見了,比如將倒車檢測做成新自定義鍵值按鍵,我們需要到多個

StringBuffer 的功能新增和刪除 StringBuilder

1.StringBuffer 是字串緩衝區,是一個容器。是一個執行緒安全的可變序列 2.功能 CURD create update read delete 特點:(當資料型別不確定,最後都要變成字串的時候) 1.長度是可以變化的, 2.可以一次操作多個數據型別 3.最終可以通過toStrin

Rocket新增指令

目錄 準備工作 Rocket Chip 原始碼 新增指令 譯碼訊號 ALU 工具鏈 opcodes 新增指令 spike支援 編譯 測試 C原始

LeetCode新增二進位制

給定兩個二進位制字串,返回它們的總和(也是二進位制字串)。 輸入字串都是非空的,只包含字元1或  0。 例1: 輸入: a =“11”,b =“1” 輸出: “100” 例2: 輸入: a =“1010”,b =“1011” 輸出: “10101” 大

本體融合新增空間方向關係

地理本體中空間關係主要分為:拓撲關係、方向關係和距離關係。 方向關係已有的模型有:基於圓錐和基於投影。基於圓錐的有四方向和八方向區域擴充套件模型。 基於投影模型,則和平面座標系類似。如圖所示 以地理實體點空間目標物件為例計算方向關係,如下所示: 將地理本體中計算得到的

Linux 操作指令新增使用者並設定許可權(個人常用備忘)

新增使用者並設定許可權 本示例操作環境為 Xshell 5 一、新增使用者 注意: 在使用useradd命令建立新使用者時,不會為使用者建立主目錄,不會為使用者指定shell版本,不會為使用者建立密碼。 使用方法: useradd 新增的使用者名稱 如: us

Linux知識點新增硬碟和分割槽掛載

windows之分割槽知識基礎   Linux分割槽  註釋:首先如圖所示,在Linux系統上存在一個硬碟,而在這硬碟上存在著很多的分割槽,             比如在這個硬碟上存在著分割槽1和分割槽2。

python中的多執行緒threading新增執行緒:Thread()

百度百科:多執行緒 多執行緒(英語:multithreading),是指從軟體或者硬體上實現多個執行緒併發執行的技術。具有多執行緒能力的計算機因有硬體支援而能夠在同一時間執行多於一個執行緒,進而提升整體處理效能。具有這種能力的系統包括對稱多處理機、多核心處理器以及晶片級多處理(Chi

AndroidStudio無法debug閃退問題

2017年12月13日 星期三 環境:AndroidStudio2.3.2 JDK1.8 測試手機:一加3T,系統7.1.1 問題描述: buildtype調成debug,準備debug的時候,一執行,就閃退. 仔細看了報錯資訊,發現有一行錯誤資訊: art/runtime/jdwp/j

XCODE DEBUG 技巧

https://www.cnblogs.com/SnowStark/p/5805979.html 抽刀斷Bug 斷點,(我求你們不要想到張敬軒,阿軒他容易麼,小受又怎麼了?你們這幫人真是的!!),我要說的斷點是BreakPoint!基本上不是殘廢的IDE都具有斷點除錯功能吧!尤其是XCod

天地圖值新增覆蓋物

最近多少還是會有一點焦慮,其實很大一部分原因是考慮的比較多罷了,適當的放棄一些東西,一切就會變的明朗起來。 接著上一篇繼續來學習天地圖 Android SDK ,地圖開發中除了常見的定位需求,還有就是覆蓋物的新增,比如最近的專案是有關風險管控的,在地圖上就要顯示對應的風

tomcat模式下不能成功進入debug模式,斷點不起作用

一、問題 javaSE專案進入debug模式正常啟動,而tomcat啟動web專案進入debug模式,斷點不起作用,按照網上各種方法試了個遍,都不行。 二、原因 根本原因是idea自帶的環境與tomcat帶的環境有了衝突,因為我們的idea預設啟動是catalina.bat啟動,而我的c

根據記憶體洩漏位置新增斷點

_CrtSetBreakAlloc(XXX); XXX代表記憶體提示資訊中大括號中的數字。 Detected memory leaks! Dumping objects -> {98500} normal block at 0x05785AD0, 152 bytes long. Data: