3

私のアプリケーションがクラッシュしたと仮定すると、その時点でapplicationWillTerminate関数が呼び出されます。その関数では、クラッシュ ログ ファイルを一時ディレクトリに保存したいと考えています。その時点でアプリが起動されると、クラッシュレポートファイルを iOS デバイスからサーバーの場所にコーディングしてアップロードしたいと考えています。

このコードを使用して、クラッシュ ログ ファイルを保存しています。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);

ただし、このコードはシミュレーターで機能します。私はこのファイルを見ることができます

/Users/UserNAme/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-sss--eee/Documents/console.log

しかし、ios デバイスでこのファイルが見つかりません。

注:使用しているiOSデバイスでファイルを見つけるためiExplorer

4

2 に答える 2

9

残念ながら、デバイスのクラッシュログをプログラムで取得することはできません。これを克服するために、多数の商用、準商用、およびオープン ソース ソリューションがあります。

特に、HockeyApp (現在は Microsoft が所有) とcrittercismは商用ソリューションを提供しています。さらに、TestFlightApp (Apple によって購入されましたが) は、そのインターフェイスを介してこの種の機能を引き続き提供します。

HockeyApp のソース コードはgithubでも入手できます。

最終的に、これらのシステムのほとんどは、iOS クラッシュ レポートのほぼ正確なコピーをディレクトリに配置するオープンソース フレームワークであるplcrashreporterと呼ばれる基礎となるクラッシュ キャッチャーを使用します。

自分で物事を管理したい場合は、強くお勧めしますplcrashreporter。それ以外の場合は、ホストされた商用ソリューションが利用可能であり、それらを見て自分で決定する必要があります.

于 2013-03-18T10:36:34.027 に答える
2

もう1つの便利なオプション(私たちはそれを使用しています)はCrashlytics.comです。これは無料で、レポートを細かく制御できます(現在、Twitterが所有しています。注意して使用してください!)。

于 2013-03-18T13:05:54.557 に答える