主线程检查器dylib注入

Main Thread Checker dylib injection

根据 Apple 开发者文档 Diagnosing Memory, Thread, and Crash Issues Early,在“检测不正确的 UI 后台线程更新”部分中,libMainThreadChecker.dylib 可以在运行时注入到应用程序中,以便使用主线程检查器工具。如何在不使用 Xcode 中的诊断设置的情况下(如果可能)或在运行时注入此 dylib?我尝试在 GitHub 上使用 osxinj 和 yololib 项目进行注入,但没有成功。

单击“停止”按钮旁边的项目名称 -> 编辑方案。在诊断下有一个选项 enable/disable it

有多种方法可以做到这一点:最简单的可能是将 DYLD_INSERT_LIBRARIES 环境变量设置为 /Applications/Xcode.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib。 (您可以从方案编辑器的 "Arguments" 选项卡执行此操作。)

另一种方法是在代码中动态加载它。只需将类似 dlopen("/Applications/Xcode.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib", RTLD_LAZY) 的内容放在应用程序启动路径的早期即可。

您也可以直接 link 针对库,但这会将库硬编码到您的应用程序中,对于主要用于调试的应用程序,我真的不推荐这样做。