### Features
We can now write tailing memory to a utrace file. Snapshotting while tracing to a file or socket is supported.
This change introduces a new console command: Trace.SnapshotFile. It writes the profiling data from memory into an optionally specified a utrace file.
### Testing
Run Editor with -tracefile
Run Editor with -trace, connect live with insights
Run Editor without -trace (this does generate a very small utrace since there is memory and data in the tail even though default channels are not enabled)
#rb johan.berg
#jira UE-150302,UE-150292
#preflight 6272a3213e1f2a9d3a88ee3d
#ROBOMERGE-OWNER: geoff.evans
#ROBOMERGE-AUTHOR: geoff.evans
#ROBOMERGE-SOURCE: CL 20124258 via CL 20125717 via CL 20126082
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 20129506 by geoff evans in ue5-main branch]
Bonus; analysis can get going quicker if a sync is added directly after the tails been sent to a new connection.
#preflight 61936d13f65efa9243c8959c
#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 18203841 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v895-18170469)
[CL 18203845 by martin ridgers in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
Cache wasted was calculated incorrectly. Bytes-sent was missing some bytes. Memory was bumped to 64 bits just in case a 4GB accident happens.
#rb jb
#rnx
#preflight 616e6b616e12ff00011bb806
#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 17857934 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v883-17842818)
[CL 17857943 by martin ridgers in ue5-release-engine-test branch]
These will help analysis know where the world was sampled at runtime in relation to the stream of data it is receiving. With these discrete points in time it is then possible to reason about gaps in events' serial numbers that can occur when late-connecting.
#rb jb
#jira ue-127376
#rnx
#preflight 615aedb7fe00590001c1440f
#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 17720409 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v879-17706426)
[CL 17720457 by martin ridgers in ue5-release-engine-test branch]
Serial numbers are no longer perscriptive (i.e. there can be gaps).
Normal trace events' headers are 50% smaller.
#jira ue-114532
#rb johan.berg
#preflight 6131df894f2c7c00016bf83c
#ROBOMERGE-SOURCE: CL 17419538 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17419569 by martin ridgers in ue5-release-engine-test branch]
#rnx
#ROBOMERGE-SOURCE: CL 16704172 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)
[CL 16704173 by martin ridgers in ue5-release-engine-test branch]
- The NewTrace event's UE_TRACE_LOG and Writer_SendData() were carefully ordered to make sure it is described in the stream before it is received. The SerialSync event however wasn't and the event description and traced event were in the wrong order. We'll dummy-trace both to force them to be described.
- The "SerialSync" event is used during analysis to indicate that no older events will be received and thus it is safe to derive a serial number. This scheme would fail if two successive calls to Writer_UpdateConnection() were made, which happened on boot.
#rb jb
#jira UE-109686
#rnx
#ROBOMERGE-SOURCE: CL 15602793 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v777-15581079)
[CL 15602797 by martin ridgers in ue5-main branch]