自动保存dSYM文件
时间: 2010-02-02 09:58 点击: 次
英文原文 http://www.cimgf.com/2009/12/23/automatically-save-the-dsym-files/ 当你编译一个Objective-C程序时,代码被转换成2进制文件。但是和Java等其它语言不同,编译无法通过时,没法看出是哪里出的
英文原文 http://www.cimgf.com/2009/12/23/automatically-save-the-dsym-files/
当你编译一个Objective-C程序时,代码被转换成2进制文件。但是和Java等其它语言不同,编译无法通过时,没法看出是哪里出的问题。但是,编译时会生成一个dSYM包。它能把编译崩溃报告和代码匹配起来,从而确定问题所在。
问题是dSYM包必须和二进制文件匹配,所以每次代码重建和版本变化时都要附带重建dSYM包。这可够麻烦的。为此我写了个脚本,它能把dSYM包移入文件目录里,生成一个叫“dSYM”的目录项。此外,该脚本还能检查并保存GIT里的包。为了防止2个包重名,脚本以生成时间来命名每个dSYM包。
故障检查
脚本的第一任务是检查能否调试。
当你编译一个Objective-C程序时,代码被转换成2进制文件。但是和Java等其它语言不同,编译无法通过时,没法看出是哪里出的问题。但是,编译时会生成一个dSYM包。它能把编译崩溃报告和代码匹配起来,从而确定问题所在。
问题是dSYM包必须和二进制文件匹配,所以每次代码重建和版本变化时都要附带重建dSYM包。这可够麻烦的。为此我写了个脚本,它能把dSYM包移入文件目录里,生成一个叫“dSYM”的目录项。此外,该脚本还能检查并保存GIT里的包。为了防止2个包重名,脚本以生成时间来命名每个dSYM包。
故障检查
脚本的第一任务是检查能否调试。
if [ "$BUILD_STYLE" == "Debug" ]; then检查该版本能否调试
echo "Skipping debug"
exit 0;
fi
脚本的第一部分是。其实文件还在开发者电脑上,代码也都在,这一步可以略过了。if [ "$EFFECTIVE_PLATFORM_NAME" == "-iphonesimulator" ]; then
echo "Skipping simulator build"
exit 0;
fi
第二步是检查版本兼容性,先不管储存代码的事。
移动文件
既然dSYM是以生成时间命名的,并且可以在开发者之间以及电脑间迁移,我把环境变量加入到文件里。SRC_PATH=${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
RELATIVE_DEST_PATH=dSYM/${EXECUTABLE_NAME}.$(date +%Y%m%d%H%M%S).app.dSYM
DEST_PATH=${PROJECT_DIR}/${RELATIVE_DEST_PATH}
echo "moving ${SRC_PATH} to ${DEST_PATH}"
mv "${SRC_PATH}" "${DEST_PATH}"
下一步就是建立文件当前位置到转存位置的路径。最好把路径存下来,出问题时好查看。
提交到版本控制
忙了半天,就是为了这个版本控制啊。if [ -f ".git/config" ]; then
git add "${RELATIVE_DEST_PATH}"
git commit -m "Added dSYM file for ${BUILD_STYLE} build" \
"${RELATIVE_DEST_PATH}"
fi
只有当项目是GIT包的一部分时才触发最后这部分代码。
脚本下载 Move_dSYM_To_Storage.sh.zip
顶一下(0)
0%
踩一下(0)
0%
发表评论
本类文章点击排行榜
- [03-08] iPhone/Mac Objective-C内存管理教程
- [06-11] Objective-C 2.0之前需要了解的:
- [04-29] 苹果GNU C/C++,objective-C/C++新特
- [01-22] Objective-C内存管理知识总结
- [01-27] Objective-C字符串操作编程实例
- [01-25] C++和Objective-C混编(官方文档
- [03-13] Objective-C中的“@”指令探讨
- [06-11] C++对象到Objective-C的参数传递
- [06-11] 使用Objective C++并同时使用C+
推荐内容
最近更新
- [06-10] Objective-C 使用MySQL数据库的教程
- [06-01] 浅谈XCode编译器的Blocks功能
- [05-20] Objective-C实现修改和删除nsstring 的方法
- [05-10] XCode里查询本机IP的Objective-C代码
- [05-06] base64 encoder/decoder for objective-c编码及解码
- [04-30] Objective-C中的字符串格式化输出
- [04-29] 苹果GNU C/C++,objective-C/C++新特性:Blocks
- [04-22] Objective-C 特性快速一览表
- [04-16] Objective-C不用数组传不定长度参数的方法


苹果GNU C/C++,objective-C/C++新特性:Blocks
Objective-C字符串操作编程实例:货币转换器
Core animation简介
关于Objective-C 2.0 的垃圾收集