macos - macOS 中是否有其他框架具有有用的环境变量,例如 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/ 中的所有框架上运行字符串,并grep
为“env”编辑。这只出现了另外两个具有明显环境变量的框架:CoreAnimation 和 OpenCL。CA 里面有这个字符串:
未提交的 CATransaction。在调试环境中设置 CA_DEBUG_TRANSACTIONS=1。
OpenCL 有这个:
未知的 CL_LOG_ERRORS 环境变量设置:“%s”。预期:{ 控制台、标准错误、标准输出 }
错误:未知 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
推荐阅读
- jquery - 这个脚本有什么问题?
- mysql - 在mysql中弹出计算器功能时出错
- java - EJB 中的抽象类错误
- php - 使用 PHP 根据其语义将 HTML 转换为 XML
- reactjs - 如何在移动菜单中使用 redux 切换嵌套链接组件
- python - Code works with Jupyter(Anaconda) but not with normal Python - WHY
- c# - 使用 UserOption 枚举创建双精度值
- function - VB6 - 如何使表单排在第二位?
- r - 在 Markdown 文档中创建响应式 Shiny 应用程序
- php - 在 PHP 和 MySQL 中上传个人资料图片:我做错了什么?