什么环境变量控制dyld?
What environment variables control dyld?
有很多环境变量可以控制 dyld 的启动,其中一些对于调试性能问题非常有用。并非所有这些都被记录在案。
这些在 dyld 手册页中有解释(至少在 macOS 10.13 上)
DYLD_FRAMEWORK_PATH
DYLD_FALLBACK_FRAMEWORK_PATH
DYLD_VERSIONED_FRAMEWORK_PATH
DYLD_LIBRARY_PATH
DYLD_FALLBACK_LIBRARY_PATH
DYLD_VERSIONED_LIBRARY_PATH
DYLD_PRINT_TO_FILE
DYLD_SHARED_REGION
DYLD_INSERT_LIBRARIES
DYLD_FORCE_FLAT_NAMESPACE
DYLD_IMAGE_SUFFIX
DYLD_PRINT_OPTS
DYLD_PRINT_ENV
DYLD_PRINT_LIBRARIES
DYLD_BIND_AT_LAUNCH
DYLD_DISABLE_DOFS
DYLD_PRINT_APIS
DYLD_PRINT_BINDINGS
DYLD_PRINT_INITIALIZERS
DYLD_PRINT_REBASINGS
DYLD_PRINT_SEGMENTS
DYLD_PRINT_STATISTICS
DYLD_PRINT_DOFS
DYLD_PRINT_RPATHS
DYLD_SHARED_CACHE_DIR
DYLD_SHARED_CACHE_DONT_VALIDATE
这个记录在 man dyld
中,但没有列在顶部的列表中:
DYLD_PRINT_STATISTICS_DETAILS
这些是未记录的:
DYLD_ROOT_PATH
DYLD_PATHS_ROOT
DYLD_DISABLE_PREFETCH
DYLD_PRINT_LIBRARIES_POST_LAUNCH
DYLD_NEW_LOCAL_SHARED_REGIONS
DYLD_NO_FIX_PREBINDING
DYLD_PREBIND_DEBUG
DYLD_PRINT_TO_STDERR
DYLD_PRINT_WEAK_BINDINGS
DYLD_PRINT_WARNINGS
DYLD_PRINT_CS_NOTIFICATIONS
DYLD_PRINT_INTERPOSING
DYLD_PRINT_CODE_SIGNATURES
DYLD_USE_CLOSURES
DYLD_IGNORE_PREBINDING
DYLD_SKIP_MAIN
DYLD_ROOT_PATH
和 DYLD_PATHS_ROOT
似乎是同义词,允许您重置 "root" 以搜索 libraries/frameworks/etc。这在 macOS/iPhoneSimulator 上可用,但在 iOS 上不可用。
DYLD_DISABLE_PREFETCH
禁用 __DATA 和 __LINKEDIT 段内容的预取。
DYLD_PRINT_LIBRARIES_POST_LAUNCH
与 DYLD_PRINT_LIBRARIES 相同,但在启动完成后立即打印。
DYLD_NEW_LOCAL_SHARED_REGIONS
和 DYLD_NO_FIX_PREBINDING
被忽略,不再做任何事情。
DYLD_PREBIND_DEBUG
打印出关于为什么没有使用预绑定的调试信息。
DYLD_PRINT_TO_STDERR
仅适用于 iOS 并强制输出到 stderr(而不是 stdout)以帮助它显示在控制台日志中。
DYLD_PRINT_WEAK_BINDINGS
打印弱绑定的调试信息。
DYLD_PRINT_WARNINGS
打印一堆警告(主要是关于闭包及其使用方式)。
DYLD_PRINT_CS_NOTIFICATIONS
打印有关核心符号的信息。
DYLD_PRINT_INTERPOSING
打印有关发生的插入的详细信息。
DYLD_PRINT_CODE_SIGNATURES
打印有关代码签名的详细信息(特别是成功和失败)。
DYLD_USE_CLOSURES
是 dyld3 的一项功能,但似乎不适用于任何非内部人员(需要 CSR_ALLOW_APPLE_INTERNAL 设置)。
DYLD_IGNORE_PREBINDING
具有三个值("all"、"app"、"nonsplit"),如果未提供值,则不拆分为默认值。
DYLD_SKIP_MAIN
是苹果独有的功能,用于测试 dyld(需要 CSR_ALLOW_APPLE_INTERNAL 设置)。
有很多环境变量可以控制 dyld 的启动,其中一些对于调试性能问题非常有用。并非所有这些都被记录在案。
这些在 dyld 手册页中有解释(至少在 macOS 10.13 上)
DYLD_FRAMEWORK_PATH
DYLD_FALLBACK_FRAMEWORK_PATH
DYLD_VERSIONED_FRAMEWORK_PATH
DYLD_LIBRARY_PATH
DYLD_FALLBACK_LIBRARY_PATH
DYLD_VERSIONED_LIBRARY_PATH
DYLD_PRINT_TO_FILE
DYLD_SHARED_REGION
DYLD_INSERT_LIBRARIES
DYLD_FORCE_FLAT_NAMESPACE
DYLD_IMAGE_SUFFIX
DYLD_PRINT_OPTS
DYLD_PRINT_ENV
DYLD_PRINT_LIBRARIES
DYLD_BIND_AT_LAUNCH
DYLD_DISABLE_DOFS
DYLD_PRINT_APIS
DYLD_PRINT_BINDINGS
DYLD_PRINT_INITIALIZERS
DYLD_PRINT_REBASINGS
DYLD_PRINT_SEGMENTS
DYLD_PRINT_STATISTICS
DYLD_PRINT_DOFS
DYLD_PRINT_RPATHS
DYLD_SHARED_CACHE_DIR
DYLD_SHARED_CACHE_DONT_VALIDATE
这个记录在 man dyld
中,但没有列在顶部的列表中:
DYLD_PRINT_STATISTICS_DETAILS
这些是未记录的:
DYLD_ROOT_PATH
DYLD_PATHS_ROOT
DYLD_DISABLE_PREFETCH
DYLD_PRINT_LIBRARIES_POST_LAUNCH
DYLD_NEW_LOCAL_SHARED_REGIONS
DYLD_NO_FIX_PREBINDING
DYLD_PREBIND_DEBUG
DYLD_PRINT_TO_STDERR
DYLD_PRINT_WEAK_BINDINGS
DYLD_PRINT_WARNINGS
DYLD_PRINT_CS_NOTIFICATIONS
DYLD_PRINT_INTERPOSING
DYLD_PRINT_CODE_SIGNATURES
DYLD_USE_CLOSURES
DYLD_IGNORE_PREBINDING
DYLD_SKIP_MAIN
DYLD_ROOT_PATH
和 DYLD_PATHS_ROOT
似乎是同义词,允许您重置 "root" 以搜索 libraries/frameworks/etc。这在 macOS/iPhoneSimulator 上可用,但在 iOS 上不可用。
DYLD_DISABLE_PREFETCH
禁用 __DATA 和 __LINKEDIT 段内容的预取。
DYLD_PRINT_LIBRARIES_POST_LAUNCH
与 DYLD_PRINT_LIBRARIES 相同,但在启动完成后立即打印。
DYLD_NEW_LOCAL_SHARED_REGIONS
和 DYLD_NO_FIX_PREBINDING
被忽略,不再做任何事情。
DYLD_PREBIND_DEBUG
打印出关于为什么没有使用预绑定的调试信息。
DYLD_PRINT_TO_STDERR
仅适用于 iOS 并强制输出到 stderr(而不是 stdout)以帮助它显示在控制台日志中。
DYLD_PRINT_WEAK_BINDINGS
打印弱绑定的调试信息。
DYLD_PRINT_WARNINGS
打印一堆警告(主要是关于闭包及其使用方式)。
DYLD_PRINT_CS_NOTIFICATIONS
打印有关核心符号的信息。
DYLD_PRINT_INTERPOSING
打印有关发生的插入的详细信息。
DYLD_PRINT_CODE_SIGNATURES
打印有关代码签名的详细信息(特别是成功和失败)。
DYLD_USE_CLOSURES
是 dyld3 的一项功能,但似乎不适用于任何非内部人员(需要 CSR_ALLOW_APPLE_INTERNAL 设置)。
DYLD_IGNORE_PREBINDING
具有三个值("all"、"app"、"nonsplit"),如果未提供值,则不拆分为默认值。
DYLD_SKIP_MAIN
是苹果独有的功能,用于测试 dyld(需要 CSR_ALLOW_APPLE_INTERNAL 设置)。