google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码
Posted
技术标签:
【中文标题】google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码为 134【英文标题】:google-toolbox-for-mac iphone unit test: 1073 Abort trap mkdir "$CFFIXED_USER_HOME" Command /bin/sh failed with exit code 134 【发布时间】:2010-11-11 21:09:21 【问题描述】:我正在尝试从 google-toolbox-for-mac 设置 iPhone 单元测试框架。我创建了一个简单的单元测试并尝试构建它并收到以下错误。我的一位同事可以使用相同的项目并在他的机器上成功构建。对于我的一生,我无法弄清楚我可能会错过什么。以下是我看到的错误消息。有没有人有任何见解?
没有找到属于您的匹配进程
mkdir(1073) malloc:保护边缘
mkdir(1073) malloc:使用标准记录器将 malloc 堆栈记录到磁盘
mkdir(1073) malloc:启用涂鸦检测模块以释放块
mkdir(1073) malloc: 进程 1059 不再存在,堆栈日志从 /tmp/stack-logs.1059.mkdir.QDKY28.index 中删除
mkdir(1073) malloc:堆栈日志正在写入/tmp/stack-logs.1073.mkdir.KrpE2L.index
检测到尝试调用 iPhone 上不存在的系统库中的符号: 从函数调用 getopt$UNIX2003 ???在图像 mkdir 中。
如果您在 gdb 中运行模拟器二进制文件时遇到此问题,请确保首先“设置 start-with-shell off”。
/Developer/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh:第 150 行:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME"
命令 /bin/sh 失败,退出代码 134
【问题讨论】:
【参考方案1】:这似乎是 google-toolbox/UnitTesting/RunIPhoneUnitTest.sh 脚本中的错误。行后的所有内容:
export DYLD_ROOT_PATH="$SDKROOT"
在“iPhone 模式”下运行。在我们较旧的 32 位 iMac 上 /bin/mkdir 似乎使用 iPhone 上不可用的 getopt$UNIX2003 系统调用。所以以下行失败:
mkdir "$CFFIXED_USER_HOME"
。在较新的 64 位 Mac 上,/bin/mkdir 与 iPhone 模式兼容。
解决方法是简单地将以if [ $GTM_DISABLE_USERDIR_SETUP -eq 0 ]; then
开头的代码部分移动到export DYLD_ROOT_PATH
部分(以及export CFFIXED_USER_HOME
行)之前。
顺便说一句,SDK 似乎有系统库 libc、libSystem 等的包装器版本,用于检查所使用的系统调用在 iPhone 上是否可用。这就是上面“iPhone 模式”的含义。
【讨论】:
谢谢!它为我解决了这个问题,只需移动那个“如果”和 alakazam - 它就可以了!【参考方案2】:听起来您的同事可能正在使用接受 $UNIX2003 符号装饰的旧版 ios SDK。当我尝试使用为早期操作系统编译的 libCURL 版本时,我遇到了类似的问题。最后,我不得不使用最新的 SDK 工具重新构建 libCURL(详情请点击此处:http://www.creativealgorithms.com/blog/content/building-libcurl-ios-42),但您可以使用与您的同事相同的 SDK(如果仍然可用)来解决它。
【讨论】:
以上是关于google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码的主要内容,如果未能解决你的问题,请参考以下文章