当前位置:主页 > 开发频道 > Mac开发 > Objective-C >

自动保存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包。

故障检查

脚本的第一任务是检查能否调试。
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%

发表评论

评价: 中立 好评 差评 请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

表情:

论坛新帖 进入论坛...