為了方便應用軟體的開發和除錯,UNIX的早期版本就提供了一種對執行時中的程式進行跟蹤和控制的手段,那就是系統的ptrace
。
這個函式在
iOS
中沒有提供標頭檔案,我們可在macOS
中檢視標頭檔案的具體細節。pteace
提供了一個非常有用的引數,PT_DENY_ATTACH
,這是一個巨集,這個引數用於告訴系統阻止偵錯程式附加。
- 首先,可以將macOS下的標頭檔案整體複製出來放到iOS工程下,方便使用。
- 然後可以使用
ptrace
函式就可以實現阻止偵錯程式附加了。具體如下
/*
arg1:ptrace要做的事情
arg2:要操作程式的ID
arg3(地址)\arg4(資料): 取決於arg1
*/
ptrace(PT_DENY_ATTACH, 0, 0, 0);
複製程式碼
此時,再使用Xcode除錯或者通過其它方式使用debugserver
除錯,都會Crash。