Backtrace では、障害に関するより多くのコンテキストを提供するために、クラッシュレポートやエラーレポートと一緒にファイルアタッチメントを送信できます。お使いのアプリケーションを Backtrace に統合する方法によって、さまざまな方法を使用できます。この記事では、ファイルアタッチメントをアップロードするのにサポートされている方法の概要について説明します。
ミニダンプとファイルアタッチメントの HTTP 送信
Backtrace には、クラッシュレポートやエラーの送信を HTTP(S)経由で受け取る、汎用のメカニズムが用意されています。ほとんどのミニダンプジェネレーターには、指定した HTTP(S)エンドポイントにミニダンプやオプションのアタッチメントをアップロードするメカニズムが組み込まれていますが、すべてではありません。
Backtrace にミニダンプファイルやアタッチメントをアップロードする方法が、お使いの Backtrace へのインテグレーションパスに用意されていない場合は、Backtrace の汎用の HTTP 送信手法を使用できます。2 つのオプションがあります。
マルチパート POST
test.json のアタッチメントが最初のクラッシュの送信に含まれる送信方法です。アカウント内のプロジェクトに正常に送信されるようにするには、次の部分を変更する必要があります。
- <Path_to_your_file>:送信するクラッシュデータが含まれるファイルの場所
- <Path_to_your_attachment>:クラッシュに添付されるファイルの場所
- <universe>:Backtrace アカウントへのアクセスに使用される URL の最初の部分
- <error-token>:クラッシュデータの送信先となるプロジェクトのエラートークン
curl -v -F "upload_file=@<Path_to_your_file>/test.json" -H "Accept: application/json" -F "attachment_test.json=@<Path_to_your_file>/test.json; type=application/json" "https://<universe>.sp.backtrace.io/api/post?token=<error-token>&format=json"
既存のクラッシュレポートにファイルを添付する
この方法では、送信されたクラッシュレポートに _rxid 値が割り当てられている必要があります。 この値は、適切にフォーマットされたリクエストを送信した後に返されます。最初の curl コマンドでは、クラッシュレポートが送信されます。2 つ目のコマンドは、最初の送信に対してファイルを添付します。
curl -d <Path_to_your_file> -H "Accept: application/json" "https://<universe>.sp.backtrace.io/api/post?token=<error-token>&format=json"
- <Path_to_your_file>:送信するクラッシュデータが含まれるファイルの場所
- <universe>:Backtrace アカウントへのアクセスに使用される URL の最初の部分
- <error-token>:クラッシュデータの送信先となるプロジェクトのエラートークン
適切にフォーマットされた送信により、次のような応答が返されます。
{"response":"ok","_rxid":"56000000-8be7-5806-0000-000000000000"}
このオブジェクトにファイルを添付するには、返された _rxid をコピーする必要があります。
curl -v --data-binary "upload_file=@<your_file_path>/test.json" -H "Expect: gzip" -H "Content-Type:application/json" "https://<univers>.sp.backtrace.io/api/post?token=<error-token>&format=json&object=<_rxid>&attachment_name=<Path_to_your_attachment>"
- &object=<_rxid> :最初の HTTP 送信から返された値
- &attachment_name=<Path_to_your_attachment>:クラッシュに添付されるファイルの場所
適切にフォーマットされたアップロード送信により、次のような応答が返されます。
{"response":"ok","_rxid":"ce000000-0000-0000-0000-000000000000","attachment_name": "test.json","attachment_id": "28","object":"ce"}
応答を見てみると、Backtrace プロジェクト内の指定されたオブジェクトにファイルが添付されたことがわかるはずです。200/ok の応答が返されるのは同じですが、_rxid の見た目が少し異なります。クラッシュが送信されなかったため、新しいユニーク ID は送信されません。今回は、特定のクラッシュレポートを識別するのに使用される、ID 属性/エラー識別子がデバッグビュー内に送信されます。
Breakpad
Breakpad は、元々はクロスプラットフォームでの C/C++ のクラッシュレポート用に Google によって開発されたオープンソースライブラリです。サーバー、デスクトップアプリ、埋め込みデバイスなど、Windows、Mac、Linux の環境でよく使用されます。Backtrace で Breakpad を使用する場合は、ライブラリの files
パラメーターを使用して、アップロードされるファイルパスのセットを指定できます。
files["upload_file_minidump"] = descriptor.path();
files["attachment_log"] = "/var/log/myApp.log";
files["attachment_cpuinfo"] = "/proc/cpuinfo";
files
パラメーターを使用してクラッシュレポートと一緒にアタッチメントをアップロードする方法の詳細については、Breakpad インテグレーションガイドを参照してください。
Crashpad
Crashpad は、元々は Google によって Breakpad ライブラリの後継として開発された、もう 1 つのオープンソースライブラリです。ファイルアタッチメントをアップロードする機能が備わった、Windows(64 ビットと 32 ビット)用の Crashpad のバイナリのセットが、Backtrace によってビルドされてリリースされています。お使いの OS 用のバイナリをダウンロードする方法については、http://get.backtrace.io/crashpad/builds/ で確認してください。
ファイルをアップロードする機能をユーザーに提供する目的で、Backtrace では、クラッシュに伴う他のメタデータを設定するのと同じように簡単にファイルを添付できる、新しいハンドラーを実装しました。
次のような見た目になります。
bool StartHandlerForBacktrace(
const base::FilePath& handler,
const base::FilePath& database,
const base::FilePath& metrics_dir,
const std::string& url,
const std::map
この新しいハンドラーは StartHandler と非常に似ており、さらに file_attachments パラメーターが追加されています。file_attachments は、アタッチメント名 ⟶ パスのマップであり、クラッシュダンプにファイルアタッチメント(ログファイル)を簡単に含めることができます。
詳細については、Crashpad インテグレーションガイドで確認してください。
今後、Backtrace では上流の Crashpad チームと協力して、ファイルアタッチメントのサポートをマスターブランチに実装する予定です。
C# と Unity
Backtrace では、Backtrace の C# レポートライブラリや Unity プラグインを使用した、C# で記述されたアプリケーションからのクラッシュや例外のレポートがサポートされています。開発者は BacktraceReport オブジェクトを使用して attachmentPaths
のリストを指定し、クラッシュレポートや例外レポートと一緒に送信できます。
var report = new BacktraceReport(
exception: exception,
attributes: new Dictionary
詳細については、こちらの C# レポートライブラリの readme ファイルを参照してください。
不明な点がある場合
不明な点がある場合は、お気軽にお問い合わせください。