使用 OBJC4-750.1 进行源码调试

须知:

  1. 最开始部分是讲述整个配置 OBJC4-750.1 的整个过程
  2. 使用简单的例子来讲述,配合源码对项目就行调试

首先,我们需要下载 OBJC4 的源码

  1. 下载地址:opensource.apple.com

  1. 我们点击最新的 10.14.1 加入下载源码界面(这里的源码比较多,你可以使用 Command + F )就行搜索,界面将会出来你想要的 objc4-750.1

此时你可以点击右边的下载,即可下载源码包。

或者你也可以点击进入

此时地址为:opensource.apple.com/source/objc… 界面如下:

这样就可以出现历史版本的列表。

Source 改成 tarballs 即可看到所有历史版本的列表

以上就是下载的整个过程。

下面我们来配置 OBJC4-750.1 的源码

  • 接下来,我们打开项目,下载的初始项目是这样的。

  • 编译一下。它会提示我们 “Remove” i386 架构模式。

  • 去掉 i386 架构的步骤

  • 然后提示我们少了 sys/reason.h

上网找了好久,终于在

opensource.apple.com/source/xnu/…

找到了文件 手动保存一下,命名为:reason.h

第五步输入为: $(SRCROOT)/CommondHeader 指向reason.h 所在地址

然后当你编译时,还有会有很多错误。我们依依按照这种方法来搞定。

  • 接下来是 mach-o/dyld_priv.h ,我们依旧按照之前的方式来搞定。
  1. 搜索 mach-o/dyld_priv.h ,找到地址(opensource.apple.com/source/dyld… 下载命名为:dyld_priv.h
  2. 接下来是 lock_private.h,下载地址(opensource.apple.com/source/libp…, 下载命名为:lock_private.h
  • 接下来是 base_private.h tsd_private.h

接下来是函数找不到,只需要去 Build Setting -> preprocessor Macros 加入

LIBC_NO_LIBCRASHREPORTERCLIENT

  • 接下来编译会出现
ld: warning: -F path '/Users/kare/OC/OpenSource/objc4-750.1/libobjc.order' is not a directory
ld: can't open order file: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/AppleInternal/OrderFiles/libobjc.order
复制代码

  • 然后是
ld: warning: -F path '/Users/kare/OC/OpenSource/objc4-750.1/libobjc.order' is not a directory
ld: library not found for -lCrashReporterClient
复制代码

那么去 Build Setting 搜索 lCrashReporterClient 删除即可.

  • 接下来是

最终是

set -x /usr/bin/xcrun -sdk macosx clang++ -Wall -mmacosx-version-min=10.12 -arch x86_64 -std=c++11 "{SRCROOT}/markgc.cpp" -o "{BUILT_PRODUCTS_DIR}/markgc" "{BUILT_PRODUCTS_DIR}/markgc" "{BUILT_PRODUCTS_DIR}/libobjc.A.dylib"

  • 接上
error: no such public header file: '/tmp/objc.dst/usr/include/objc/ObjectiveC.apinotes'
复制代码

把这里设置为 Errors Only

但是还会报这个错误

暴力解法,直接把这里的东西全部删除掉。再编译,就可以成功了。

过程很漫长,但是还是很有意思的。

然后就是简历 target,使用源码调试了。

比如想看class_copyIvarList内部实现,直接点击进入就好了哟。

快来试试吧,有源码,就直接怼个窟窿。不服就干。

另外,提供一份已经配置好的 Objc-750.1 可编译的源码。

Github 地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值