在 xcode 的 debug 中有個 Attach to Process 附加進程:
變成 Running 後就附加上了,可以直接斷點調試了:
並且可以 view debug :
Xcode 中的 lldb 可以調試手機中的應用,是因為手機中的 debugserver 開啟的相關服務。所以在越獄環境中我們只需要開啟 debugserver 服務就可以利用 LLDB 遠程調試三方應用了。
mac 在 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 目錄中能夠看到不同 iOS 系統版本對應的的鏡像文件:
打開 dmg 文件,進入 usr/bin 目錄可以看到 debugserver 。這就是 xcode 安裝到手機中的文件:
當 xcode 第壹次連接手機的時候就會將 debugserver 安裝到手機。
具體安裝在手機的 /Developer/usr/bin/ 目錄中:
將手機中的 debugserver 拷貝出來與 mac 上的進行 md5 驗證
md5 壹致驗證確認。
由於 debugserver 權限問題 debugserver 默認只能附加 Xcode 安裝的程序。需要對其進行重簽名來附加其它程序。當出現 Failed to get connection from a remote gdb process 的時候壹般都是權限的問題。
對 debugserver 重簽使用的是 ldid 工具 (需要安裝), ldid 具體功能可以直接在電腦終端輸入 ldid 查看:
拷貝 Xcode 中和手機版本對應的 debugserver 導出權限文件(我這裏是 iOS14 ):
完整內容與自己的統版本有關,這裏是 iOS14.0 ,?是 arm64 和 arm64e 兩個架構的:
修改好後好後進行重簽名( -S 後面沒有空格):
ldid -S權限文件 debugserver文件
如果妳想用重簽名後的 debugserver 替換 /Developer/usr/bin 目錄下的 debugserver 那麽妳想多了。這個目錄我們沒有修改權限(只讀目錄)。
那麽我們直接將重新簽名後的 debugserver 放入 /usr/bin/ 目錄中:
至此手機端的 debugserver 就已經配置好了。
在開啟手機端 debugserver 前,我們先在端口映射處加壹個映射:
同時映射兩個端口, iproxy 和 python腳本 都可以。
進入 /usr/bin/ 目錄輸入 ./debugserver 就可以看都有哪些功能了:
可以看到我們可以通過進程id和名字開啟:
debugserver 主機地址:端口號 –a 應用進程
手機端先開啟 debug server :
進入監聽狀態。
在 mac 終端直接輸入 lldb 回車進入 lldb 環境,然後連接:
process connect connect://IP:端口
連接需要等幾秒鐘。出現 Target stopped 就連接成功了,可以直接輸入命令調試了。
參考
/t/ios12-debugserver-lldb/14429