哪些环境变量控制着模型?

时间:2018-07-24 17:27:19

标签: ios xcode macos dyld

有一堆控制dyld启动的环境变量,其中一些对于调试性能问题非常有用。并非所有文件都记录在案。

1 个答案:

答案 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_PATHDYLD_PATHS_ROOT似乎是同义词,允许您重置“ root”以搜索库/框架/等。这在macOS / iPhoneSimulator上可用,但在iOS上不可用。

DYLD_DISABLE_PREFETCH禁用__DATA和__LINKEDIT段的内容的预取。

DYLD_PRINT_LIBRARIES_POST_LAUNCH与DYLD_PRINT_LIBRARIES相同,但是在启动完成后立即打印它们。

DYLD_NEW_LOCAL_SHARED_REGIONSDYLD_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)。