1

TestFlight がクラッシュしたときに、クラッシュ レポートと一緒にアップロードしたいログがあります。

彼らのウェブサイトの指示に従って、この解決策を思いつきましたが、渡したログを TFLog に送信していないようです。ただし、クラッシュは問題なく報告されます。

-(void)applicationDidFinishLaunching:(UIApplication *)application {

    /*Setup crash handlers for TestFlight so we can send logs. */
    NSSetUncaughtExceptionHandler(&testFlightHandleExceptions);
    // create the signal action structure
    struct sigaction newSignalAction;
    // initialize the signal action structure
    memset(&newSignalAction, 0, sizeof(newSignalAction));
    // set SignalHandler as the handler in the signal action structure
    newSignalAction.sa_handler = &testFlightSignalHandler;
    // set SignalHandler as the handlers for SIGABRT, SIGILL and SIGBUS
    sigaction(SIGABRT, &newSignalAction, NULL);
    sigaction(SIGILL, &newSignalAction, NULL);
    sigaction(SIGBUS, &newSignalAction, NULL);
    [TestFlight takeOff:TESTFLIGHT_API_KEY];
}

void testFlightHandleExceptions(NSException *exception) {
    [LogManager e: @"Sending crash to TestFlight" Tag:@"AppDelegate"];
    TFLog(@"%@",[LogManager getLog]);
}

どこで間違ったのですか?または、これを行うためのより良い方法はありますか?

4

1 に答える 1

3

これには2つの問題があります。

  1. testFlightHandleExceptionsクラッシュに呼び出され、ログが記録されます。代わりに、何かをログに記録するたびに (クラッシュの前に)TFLog内部で呼び出す必要があります。LogManagerそれが使用されることを意味する方法です。

  2. シグナル ハンドラ内で使用するのは適切ではありません。objcさらに言えば、ほとんどcは許可されていません。

それが役立つことを願っています:)

ジェイソン

于 2013-03-28T00:20:02.173 に答える