macOS 中是否有其他框架具有有用的 env var,例如 CGBITMAP_CONTEXT_LOG_ERRORS



如果你编写了一些代码,向CoreGraphics发送了一个错误的值,它会告诉你CGBITMAP_CONTEXT_LOG_ERRORS环境变量:

CGBitmapContextCreate:不支持的参数组合:设置CGBITMAP_CONTEXT_LOG_ERRORS环境变量以查看详细信息

这是非常有帮助的!如果您设置CG_NUMERICS_SHOW_BACKTRACE,它甚至会为您提供出错位置的堆栈跟踪:

错误:此应用程序或其使用的库已将无效的数值(NaN 或非数字(传递给 CoreGraphics API,并且此值被忽略。请解决此问题。 2019-09-19 20:18:17.373382-0700 CGErrorsTest[22319:1448474] [com.example.CGErrorsTest] 如果您想查看回溯,请设置CG_NUMERICS_SHOW_BACKTRACE环境变量。

macOS 或 iOS 中是否有其他框架具有类似的环境变量来提供额外的日志记录信息?

根据@defense2000x的建议,我编写了一个shell脚本来在/System/Library/Frameworks/中的所有框架上运行字符串,并为"env"grep编辑。这只出现了另外两个具有明显环境变量的框架:CoreAnimation和OpenCL。CA 包含以下字符串:

未承诺的猫行动。在环境中设置 CA_DEBUG_TRANSACTIONS=1 进行调试。

OpenCL有这个:

未知CL_LOG_ERRORS环境变量设置:"%s"。 预期: { console, stderr, stdout }

错误:未知CL_LOG_ERRORS环境变量设置:"%s">

错误:忽略未知CL_LOG_ERRORS环境变量设置:"%s">

目前尚不清楚可以承担哪些价值,但由于 OpenCL 在 macOS 上已弃用,我想这并不重要。

这是我用来查找上述内容的脚本:

#!/bin/sh
LIBS=`ls -1 /System/Library/Frameworks/`
for LIB in $LIBS; do
LIB_NO_FRAMEWORK=`echo $LIB | awk -F. '{ print $1; }'`;
FULL_LIB=$LIB/Versions/Current/$LIB_NO_FRAMEWORK
echo working on: $FULL_LIB;
strings $FULL_LIB | grep -i "env"; 
done

相关内容

最新更新