Nitin
Nitin

Reputation: 269

List of environment variable in Objective C?

I need list of environment variable that are used in Objective C.

e.g NSObjCMessageEnabled: YES which is used for method logging. Please list down all such methods.

Upvotes: 3

Views: 1367

Answers (1)

Matthias
Matthias

Reputation: 8180

Regarding Apple's documentation, the list varies from release-to-release. E.g., for my OSX 10.2.8, the following debugging environment variables exist (beside of NSObjCMessageLoggingEnabled):

  • OBJC_PRINT_OPTIONS: list which options are set
  • OBJC_PRINT_IMAGES: log image and library names as they are loaded
  • OBJC_PRINT_LOAD_METHODS: log calls to class and category +load methods
  • OBJC_PRINT_INITIALIZE_METHODS: log calls to class +initialize methods
  • OBJC_PRINT_RESOLVED_METHODS: log methods created by +resolveClassMethod: and +resolveInstanceMethod:
  • OBJC_PRINT_CLASS_SETUP: log progress of class and category setup
  • OBJC_PRINT_PROTOCOL_SETUP: log progress of protocol setup
  • OBJC_PRINT_IVAR_SETUP: log processing of non-fragile ivars
  • OBJC_PRINT_VTABLE_SETUP: log processing of class vtables
  • OBJC_PRINT_VTABLE_IMAGES: print vtable images showing overridden methods
  • OBJC_PRINT_CACHE_SETUP: log processing of method caches
  • OBJC_PRINT_FUTURE_CLASSES: log use of future classes for toll-free bridging
  • OBJC_PRINT_GC: log some GC operations
  • OBJC_PRINT_PREOPTIMIZATION: log preoptimization courtesy of dyld shared cache
  • OBJC_PRINT_CXX_CTORS: log calls to C++ ctors and dtors for instance variables
  • OBJC_PRINT_EXCEPTIONS: log exception handling
  • OBJC_PRINT_EXCEPTION_THROW: log backtrace of every objc_exception_throw()
  • OBJC_PRINT_ALT_HANDLERS: log processing of exception alt handlers
  • OBJC_PRINT_REPLACED_METHODS: log methods replaced by category implementations
  • OBJC_PRINT_DEPRECATION_WARNINGS: warn about calls to deprecated runtime functions
  • OBJC_PRINT_POOL_HIGHWATER: log high-water marks for autorelease pools
  • OBJC_PRINT_CUSTOM_RR: log classes with un-optimized custom retain/release methods
  • OBJC_PRINT_CUSTOM_AWZ: log classes with un-optimized custom allocWithZone methods
  • OBJC_DEBUG_UNLOAD: warn about poorly-behaving bundles when unloaded
  • OBJC_DEBUG_FRAGILE_SUPERCLASSES: warn about subclasses that may have been broken by subsequent changes to superclasses
  • OBJC_DEBUG_FINALIZERS: warn about classes that implement -dealloc but not -finalize
  • OBJC_DEBUG_NIL_SYNC: warn about @synchronized(nil), which does no synchronization
  • OBJC_DEBUG_NONFRAGILE_IVARS: capriciously rearrange non-fragile ivars
  • OBJC_DEBUG_ALT_HANDLERS: record more info about bad alt handler use
  • OBJC_USE_INTERNAL_ZONE: allocate runtime data in a dedicated malloc zone
  • OBJC_DISABLE_GC: force GC OFF, even if the executable wants it on
  • OBJC_DISABLE_VTABLES: disable vtable dispatch
  • OBJC_DISABLE_PREOPTIMIZATION: disable preoptimization courtesy of dyld shared cache

If you want to get the list at your system, set OBJC_HELP to YES and start a program. Then, the list is dumped.

Upvotes: 4

Related Questions