xcode 使用筆記

最近做個 IM 相關(guān)的項目,為了搞個開源的 IOS 版本,因此開啟了 XCode 開發(fā)使用

遇見了如下幾點問題

環(huán)境說明

Mac       macOS High Sierra.   版本 10.13.6
XCode Version 9.4.1 (9F2000)

1. Pod

在 Java 的世界呆時間長了,習(xí)慣了 mvn, ant 等內(nèi)容, Pod 可以認(rèn)為是 ios 下的 mvn 用來管理依賴包,類似 mvn 或其他的工具類似,它有自己獨立的命令,如下所示 引用于 pod命令匯總

pod 命令列表

如需要進(jìn)一步了解其使用,可以參見 pod <cmd> --help 進(jìn)行查看, 比如:

pod install --help

2. llvm 控制臺

進(jìn)入 llvm 控制臺的方式有兩種:

  • 調(diào)試模式下進(jìn)入到斷點或Pause執(zhí)行程序
  • 發(fā)生異常錯誤

當(dāng)進(jìn)入到 llvm 控制臺之后,可以進(jìn)行如下操作:

# 常見的 po 命令,用于打印對象內(nèi)容
# 比如 打印當(dāng)前模擬器運行時生成的工程文件位置
(llvm) po NSHomeDirectory()
"/Users/mac/Library/Developer/CoreSimulator/Devices/4467A339-CA05-4FBB-83A5-5C396770EFB1/data/Containers/Data/Application/2A4E420E-1575-461F-BBE3-85E2880C3749"

# 打印當(dāng)前線程堆棧信息
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x0000000116ec920a libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x0000000116ec8724 libsystem_kernel.dylib`mach_msg + 60
    frame #2: 0x00000001103257d5 CoreFoundation`__CFRunLoopServiceMachPort + 229
    frame #3: 0x0000000110324c19 CoreFoundation`__CFRunLoopRun + 1689
    frame #4: 0x000000011032430b CoreFoundation`CFRunLoopRunSpecific + 635
    frame #5: 0x0000000119a66a73 GraphicsServices`GSEventRunModal + 62
    frame #6: 0x00000001124b0057 UIKit`UIApplicationMain + 159
    frame #7: 0x000000010efc13c7 UCreaterChat`main at AppDelegate.swift:12
    frame #8: 0x0000000116a5b955 libdyld.dylib`start + 1

同時也能執(zhí)行 gdb 信息,比如:

命令 備注
break NUM 在指定的行上設(shè)置斷點。
bt 顯示所有的調(diào)用棧幀。該命令可用來顯示函數(shù)的調(diào)用順序。
clear 刪除設(shè)置在特定源文件、特定行上的斷點。其用法為:clear FILENAME:NUM。
continue 繼續(xù)執(zhí)行正在調(diào)試的程序。該命令用在程序由于處理信號或斷點而導(dǎo)致停止運行時。
display EXPR 每次程序停止后顯示表達(dá)式的值。表達(dá)式由程序定義的變量組成。
file FILE 裝載指定的可執(zhí)行文件進(jìn)行調(diào)試。
help NAME 顯示指定命令的幫助信息。
info break 顯示當(dāng)前斷點清單,包括到達(dá)斷點處的次數(shù)等。
info files 顯示被調(diào)試文件的詳細(xì)信息。
info func 顯示所有的函數(shù)名稱。
info local 顯示當(dāng)函數(shù)中的局部變量信息。
info prog 顯示被調(diào)試程序的執(zhí)行狀態(tài)。
info var 顯示所有的全局和靜態(tài)變量名稱。
kill 終止正被調(diào)試的程序。
list 顯示源代碼段。
make 在不退出 gdb 的情況下運行 make 工具。
next 在不單步執(zhí)行進(jìn)入其他函數(shù)的情況下,向前執(zhí)行一行源代碼。
print EXPR 顯示表達(dá)式 EXPR 的值。
print-object 打印一個對象 (即 po )
print (int) name 打印一個類型
print-object [artist description] 調(diào)用一個函數(shù) (即 po )
set artist = @"test" 設(shè)置變量值
whatis 查看變理的數(shù)據(jù)類型

3. 斷點問題

[問題 1] 將某些變量放到 Watch 中之后,每次進(jìn)入到那個Watch 執(zhí)行的地方時候,基本都會發(fā)生崩潰( 原因是構(gòu)建那個對象時候,里面不支持,這時候直接 exit 0 ... )
[解決方法] 刪除 .xcworkspace/ 目錄下的 Expressions.xcexplist 文件即可。

mac$  find . -name "Expressions.xcexplist" -exec rm -f {} \;

4. 查看當(dāng)前調(diào)試界面對應(yīng)的 ViewController 等信息

在 XCode 中存在類似 Android 開發(fā)的 View Hierarchy 通過它可以打開相應(yīng)的界面查看屬性元素信息,如下圖:

界面元素

注意點擊如下圖標(biāo)(Debug View Hierarchy) 按鈕,即可出現(xiàn)如上界面


Debug View Hierarchy

其附近也存在類似的如 調(diào)試內(nèi)存使用的 按鈕 。

5. 調(diào)試相關(guān)參數(shù)設(shè)定

類似 Eclipse 或 Android Studio 中運行時參數(shù)設(shè)定一樣,對 IOS 中設(shè)定一些初始化設(shè)置,進(jìn)入方式如下: [Product] -> [Edit Scheme] 即可進(jìn)入如下界面:


Edit Scheme 界面

比如 Enable Zombi Objects 或添加參數(shù)等,均在此進(jìn)行操作。

6. Profile 相關(guān)使用

將程序運行起來之后,進(jìn)入方式:[Product] -> [Profile] 進(jìn)入如下Instrument 模板界面:


Profile界面

選擇 [Time Profiler] 類似 Android 中可以調(diào)試函數(shù)執(zhí)行的時間消耗等信息,充分調(diào)試那些函數(shù)是最耗時步驟。

7. 常見快捷鍵

快捷鍵 說明
command + 1 工程導(dǎo)航器
command + 0 顯示/隱藏導(dǎo)航器面板
command + [/] 向前/后縮進(jìn)(Shift Left/Right)
command + option + [/] 將當(dāng)前光標(biāo)所在行代碼上移或者下移(Move Line Up/Down)
option+command+←/→ 折疊當(dāng)前代碼塊,包括@interface …@end、@implementation …@end
option+shift+command+←/→ 折疊該文件內(nèi)所有代碼塊(方法/函數(shù):{ Methods&Functions })
control+shift+command+←/→ 折疊當(dāng)前注釋塊(/Comment Blocks/)
shift+command+J 在項目導(dǎo)航中定位當(dāng)前編輯其中打開的文件(Reveal in Project Navigator)。
command+L 跳轉(zhuǎn)到指定行。
shift+command+O Open Quickly,快速全局查找文件、符號,非常常用!
command+點擊Editor中選中的符號 跳轉(zhuǎn)到符號定義(jump to definition)。
control+command+J 跳轉(zhuǎn)到指定符號的定義處或?qū)崿F(xiàn)處(Go to Declaration/Definition)。有時工程正在Loading、Indexing或Processing files時,“command+點擊”無法響應(yīng),此時可試試control+command+J
shift+command+Y 顯示控制臺(Show/Hide the debug area)
shift+command+C 激活聚焦控制臺,光標(biāo)定位到控制臺呈可輸入狀態(tài)
command+K 清除控制臺(Debug->Debug Workflow->Clear Console)
command + \ 當(dāng)前行設(shè)置/取消斷點;通過鼠標(biāo)點擊邊列中的藍(lán)色斷點來啟用/禁用當(dāng)前行斷點。
command + Y 全局激活或禁用所有的斷點,激活進(jìn)入調(diào)試模式(此時斷點藍(lán)色可見)。
command + R 運行
command + control + i 進(jìn)入 Profile 界面

參考

pod命令匯總
Xcode的控制臺調(diào)試命令

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本人iOS菜鳥一名,在使用iOS開發(fā)工具XCode過程遇到的問題在此進(jìn)行記錄。 安裝CocoaPods 安裝coc...
    Thresh0ld閱讀 870評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • 添加自帶的framework 1 2 3 4 5 添加第三方庫 AFNetworking 添加自帶依賴 下載AFN...
    heguorui閱讀 3,062評論 1 2
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,205評論 3 119
  • http://www.itdecent.cn/p/aaf5172dda54 足記
    Ben_Hu閱讀 157評論 1 1

友情鏈接更多精彩內(nèi)容