Xcode,Parse Crash Reporting,未创建dSYM文件

时间:2015-03-19 14:31:59

标签: ios xcode parse-platform crash-reports

我有一个iOS应用程序,使用Parse SDK 1.7.0在Xcode 6.2中用Swift编写。我已经完成了Parse快速入门说明,用于设置崩溃报告(包括AppDelegate中的ParseCrashReporting.enable()),但似乎我的运行脚本出现了问题。错误是:App "/Users/ben/Library/Developer/Xcode/DerivedData/MyApp-ahydphsjgdgefbhcdodokcmofehe/Build/Products/Debug-iphonesimulator/MyApp.app.dSYM" wasn't found. Command /bin/sh failed with exit code 1

据此,似乎Xcode没有创建dSYM文件。在我的构建设置>构建选项我已经使用dSYM文件将调试信息格式更改为" DWARF"用于Debug和Release。 (以前,Debug设置为" DWARF")

我应该更改构建选项中的其他内容吗?

此外,这可能是问题吗? export DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT=NO

这是我的运行脚本:

export PATH=/usr/local/bin:$PATH
cd $PROJECT_DIR/parse

parse symbols "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

提前感谢您提供有关如何解决此问题的任何想法。

编辑:感谢@udjat的回答,我能够运行我的应用并运行脚本(如下)而不会导致应用崩溃。并且由于Parse的一些错误修复,测试崩溃报告现在也在运行,尽管仍有很长的延迟。

新的运行脚本:

echo "Parse Crash Reporting"
export PATH=/usr/local/bin:$PATH
CLOUD_CODE_DIR=${PROJECT_DIR}/parse

if [ -d ${CLOUD_CODE_DIR} ]; then
cd ${CLOUD_CODE_DIR}
parse symbols MyApp --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
echo "Finished uploading symbol"
else
echo "Unable to upload symbols"
fi

AppDelegate中的崩溃测试:

func crash() {
    NSException(name:NSGenericException, reason:"Everything is ok. This is just a test crash.", userInfo:nil).raise()
}

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {

    ParseCrashReporting.enable()

    dispatch_after(
        dispatch_time(DISPATCH_TIME_NOW, Int64(5.0 * Double(NSEC_PER_SEC))),
        dispatch_get_main_queue(),
        { () -> Void in
            self.crash()
    });
}

6 个答案:

答案 0 :(得分:8)

在阅读了Facebook link @jairobjunior后,我在ÁrniJónReginsson的回答中找到了解决方案(至少对我自己而言)并进行了一些修改。

在Parse文档中,您的运行脚本是:

export PATH=/usr/local/bin:$PATH
cd YOUR_PATH
parse symbols "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

相反,请将其更改为:

echo "Parse Crash Reporting"
export PATH=/usr/local/bin:$PATH
CLOUD_CODE_DIR=${PROJECT_DIR}/ParseCloudCode(or wherever yours is)

if [ -d ${CLOUD_CODE_DIR} ]; then
    cd ${CLOUD_CODE_DIR}
    parse symbols YOUR_PARSE_APP_NAME --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
    echo "Finished uploading symbol"
else
    echo "Unable to upload symbols"
fi

你的崩溃报告出现在Parse上需要的时间远远超过“一分钟”(花了我超过15分钟)。如果它完成上传,它就会在那里,你只需要耐心等待。

答案 1 :(得分:3)

这里有一个关于此问题的开放主题:https://developers.facebook.com/bugs/587774604658221/

我遇到了同样的问题,即使尝试手动操作也说文件“找不到”,但文件就在那里。我注意到的一件事是.dSYM不是文件,对我来说它似乎是一个文件夹/包。

答案 2 :(得分:2)

我发现这个工作..

export PATH=/usr/local/bin:$PATH
cd YOUR_PATH
parse symbols AppName -p "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

将应用名称和-p添加到解析行

答案 3 :(得分:0)

抱歉,我没有评论的声誉,所以我会留下这个作为答案。

我遇到了确切的问题。还使用最新的Parse SDK。怀疑它是最新的CLI 2.0.0的问题,因为开发人员在更新到2.0.0之后开始得到你正在获得的问题(我也得到了)

订阅此Facebook错误报告帖子以便将来获得解决方案。 https://developers.facebook.com/bugs/466020460223551/

此时似乎问题来自SDK。所以除了等待Parse解决这个问题之外没什么可做的。

(感谢@jairobjunior向我介绍Facebook错误报告页面!)

答案 4 :(得分:0)

只是想让你知道你并不孤单:虽然我的DSYM似乎上传得很好,但无论我做什么,我的任何应用程序的崩溃报告都没有出现在parse.com上。我花了一个小时检查每个设置......一切看起来都不错。我和你一样使用相同的测试崩溃...

因此,如果您发现崩溃的解决方案未在parse.com上显示,请在此处更新。谢谢!

答案 5 :(得分:0)

在我的情况下,问题可能是通过更改项目名称来创建的,无论如何使用以下脚本来实现:

parse symbols MyAppName --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

我在MyAppName文件中找到parse/config的位置:

{
    "applications": {
        "MyAppName": {
            "applicationId": "....kjsldgjslkgjslkgj...",
            "masterKey": "....lksjmll242dg2d1g2..."
        },
        "_default": {
            "link": "MyAppName"
        }
    }
}