有一堆控制dyld启动的环境变量,其中一些对于调试性能问题非常有用。并非所有文件都记录在案。
答案 0 :(得分:5)
在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”以搜索库/框架/等。这在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”,“ unsplit”),如果未提供值,则默认值为nonsplit。
DYLD_SKIP_MAIN
是仅用于测试dyld的苹果功能(需要设置CSR_ALLOW_APPLE_INTERNAL)。