クラッシュレポートの拡張

Windowsでクラッシュレポートを送信する際、特定のディレクトリ(プロジェクト名\Saved\Recordings)に保存されている動画をアップロードしたいと考えています。

これを実現するには、どの部分を拡張すればよいでしょうか?

<br/>

[Attachment Removed]

再現手順[Attachment Removed]

お世話になっております。

変更する場所は2か所です。

  • エンジン側

既存の OptionalAttachments の仕組みがそのまま使えます。FWindowsPlatformCrashContext::AddOptionalAttachment()(WindowsPlatformCrashContext.h)に動画のパスを事前に登録しておくと、クラッシュ時に CopyPlatformSpecificFiles() から CopyOptionalAttachments() が呼ばれ、Saved/Crashes/<CrashGUID>/OptionalAttachments/ に移動されます。

注意点は2つあります。Move なので元ファイルは Recordings から消えます(残したければ CopyOptionalAttachments() の Move を Copy に変更)。また、パッケージ版のインプロセス経路が対象で、エディタの monitor モードでは拾われません。

もっと簡単にするなら、CopyPlatformSpecificFiles()(WindowsPlatformCrashContext.cpp)の CrashVideo.avi をコピーしている箇所の隣で、Recordings の動画を OutputDirectory 直下にコピーしてください。クラッシュフォルダ直下のファイルは CRC が自動で全部送るので、CRC 側の変更は不要です。

  • CRC 側(OptionalAttachments を使う場合のみ)

OptionalAttachments は FCrashUploadToDataRouter::BeginUploadOptionalAttachments()(CrashUpload.cpp)で、本体の送信成功後に別便で送られます。DataRouter 経由のみです。送られるのは FCrashReportClient の bSendOptionalAttachments が true のときだけで、これを立てるのは Submit(true) か SubmitOptionalAttachmentsAndClose() だけです。

UI(SCrashReportClient.cpp)のチェックボックスはスクリーンショット専用で、しかも Send ボタンに渡している bool は構築時の false で固定されるため、チェックしても反映されません。動画用に表示条件と Submit の呼び出しを直す必要があります。Unattended モードは OptionalAttachments を送りません。

お手数ですが、よろしくお願いします。

[Attachment Removed]

アドバイスありがとうございます、試してみます

[Attachment Removed]