关于 Apple 的文档,列表因版本而异。例如,对于我的 OSX 10.2.8,存在以下调试环境变量(除了NSObjCMessageLoggingEnabled):
- OBJC_PRINT_OPTIONS:列出设置了哪些选项
- OBJC_PRINT_IMAGES:在加载时记录图像和库名称
- OBJC_PRINT_LOAD_METHODS:记录对类和类别+加载方法的调用
- OBJC_PRINT_INITIALIZE_METHODS:记录对类+初始化方法的调用
- OBJC_PRINT_RESOLVED_METHODS:记录由 +resolveClassMethod: 和 +resolveInstanceMethod: 创建的方法
- OBJC_PRINT_CLASS_SETUP:记录类和类别设置的进度
- OBJC_PRINT_PROTOCOL_SETUP:记录协议设置的进度
- OBJC_PRINT_IVAR_SETUP : 非脆弱 ivars 的日志处理
- OBJC_PRINT_VTABLE_SETUP:类vtables的日志处理
- OBJC_PRINT_VTABLE_IMAGES:打印显示覆盖方法的 vtable 图像
- OBJC_PRINT_CACHE_SETUP:方法缓存的日志处理
- OBJC_PRINT_FUTURE_CLASSES:记录未来类的使用情况以进行免费桥接
- OBJC_PRINT_GC:记录一些 GC 操作
- OBJC_PRINT_PREOPTIMIZATION:日志预优化由 dyld 共享缓存提供
- OBJC_PRINT_CXX_CTORS:记录对实例变量的 C++ ctors 和 dtors 的调用
- OBJC_PRINT_EXCEPTIONS:日志异常处理
- OBJC_PRINT_EXCEPTION_THROW:记录每个 objc_exception_throw() 的回溯
- OBJC_PRINT_ALT_HANDLERS : 异常 alt 处理程序的日志处理
- OBJC_PRINT_REPLACED_METHODS:日志方法替换为类别实现
- OBJC_PRINT_DEPRECATION_WARNINGS:警告调用已弃用的运行时函数
- OBJC_PRINT_POOL_HIGHWATER:记录自动释放池的高水位标记
- OBJC_PRINT_CUSTOM_RR:具有未优化的自定义保留/释放方法的日志类
- OBJC_PRINT_CUSTOM_AWZ:使用未优化的自定义 allocWithZone 方法记录类
- OBJC_DEBUG_UNLOAD:警告卸载时表现不佳的捆绑包
- OBJC_DEBUG_FRAGILE_SUPERCLASSES:警告子类可能已被超类的后续更改破坏
- OBJC_DEBUG_FINALIZERS:警告实现 -dealloc 但不实现 -finalize 的类
- OBJC_DEBUG_NIL_SYNC:警告@synchronized(nil),它不同步
- OBJC_DEBUG_NONFRAGILE_IVARS:反复排列非脆弱的 ivars
- OBJC_DEBUG_ALT_HANDLERS:记录有关错误 alt 处理程序使用的更多信息
- OBJC_USE_INTERNAL_ZONE:在专用的 malloc 区域中分配运行时数据
- OBJC_DISABLE_GC:强制 GC 关闭,即使可执行文件希望它开启
- OBJC_DISABLE_VTABLES : 禁用 vtable 调度
- OBJC_DISABLE_PREOPTIMIZATION:禁用预优化,由 dyld 共享缓存提供
如果您想在您的系统中获取该列表,请设置OBJC_HELP
并YES
启动一个程序。然后,列表被转储。