Martin Ridgers
60c59e13e2
Extend lifetime of thread info objects. Previously there was a slim chance that they would get moved while someone else was holding on to a pointer to them.
...
#rb jb
#rnx
[CL 16192808 by Martin Ridgers in ue5-main branch]
2021-05-04 09:01:07 -04:00
Martin Ridgers
b8523e1c46
Guard against reading too much of an event's header from the trace data stream
...
#rb im
#rnx
[CL 16156223 by Martin Ridgers in ue5-main branch]
2021-04-29 08:18:34 -04:00
Martin Ridgers
e92804c644
Fixed typo in a comment
...
#rb im
#rnx
[CL 16156203 by Martin Ridgers in ue5-main branch]
2021-04-29 08:16:23 -04:00
Martin Ridgers
1d840cfe34
Use uint32 to store the UID instead of uint16. If anything the code generation is a little better as there are no prefixes.
...
#rb im
#rnx
[CL 16156198 by Martin Ridgers in ue5-main branch]
2021-04-29 08:15:47 -04:00
Martin Ridgers
75898aaf65
Guard against some legacy paths taken when analyzing old traces as they set the auxilary data collector object to null.
...
#rb im
#rnx
[CL 16156193 by Martin Ridgers in ue5-main branch]
2021-04-29 08:14:42 -04:00
Martin Ridgers
7107dca2f6
EventData.GetString() was incorrectly returning false if the requested field did exist but was empty.
...
#rb im
#rnx
[CL 16156188 by Martin Ridgers in ue5-main branch]
2021-04-29 08:12:58 -04:00
Martin Ridgers
8c25a5e19c
Added a EventData.GetSize() method to report the size in bytes of a traced event to the curious.
...
#rb trivial
#rnx
[CL 16112307 by Martin Ridgers in ue5-main branch]
2021-04-26 03:35:01 -04:00
Martin Ridgers
ef3e0711d7
Added an EventTypeInfo.GetSize() to get the unadorned size of an trace event.
...
#rb trivial
#rnx
[CL 16112306 by Martin Ridgers in ue5-main branch]
2021-04-26 03:33:22 -04:00
Martin Ridgers
47783d686d
Moved trace's transport enums into their own include file.
...
#rb jb
#rnx
[CL 15929693 by Martin Ridgers in ue5-main branch]
2021-04-06 09:35:47 -04:00
Martin Ridgers
5f768247a4
Fixed PVS-Studio analysis warning.
...
#jira UE-106046
#rb trivial
#rnx
[CL 15047378 by Martin Ridgers in ue5-main branch]
2021-01-12 04:25:33 -04:00
Martin Ridgers
33b3b9d0db
Indicate when it is okay for analysis to derive the starting log serial. This mitigates against cases where the data sent in one update of the run time has fragmented delivery when analysed (e.g. due to TCP overhead or read buffer sizes). Fragmentation results in analysis making decisions based on a partial view of the world.
...
#rb none
#rnx
[CL 15035044 by Martin Ridgers in ue5-main branch]
2021-01-11 04:15:10 -04:00
Martin Ridgers
4c8225b424
An alternative API for reading fields' values. A opaque handle can be retrieved when an event is first described instead of hashing a string and traversing a table for each GetValue() call. Bast-case can be an instruction or two instead of much work.
...
#rb none
#rnx
[CL 15034179 by Martin Ridgers in ue5-main branch]
2021-01-10 16:26:31 -04:00
Martin Ridgers
2cf9a89ea2
Moved event data pointer to the start of an internal struct so it is a little bit easier to find from the outside.
...
#rb none
#rnx
[CL 15034159 by Martin Ridgers in ue5-main branch]
2021-01-10 16:18:43 -04:00
Martin Ridgers
5a6316dbf8
Fixed pointer invalidation when new thread events were received.
...
Events marked as important are associated internally to a pseudo thread with id 0 [A]. New-thread events are considered important and thus appear as if they were traced on thread 0. They will add thread N which will modify the Infos array. If someone was holding a A& = Infos[0] when Infos[N] was added then A can become stale. To combat this edge-case we'll thread 0 as a special case so it doesn't invalidate itself with its own events.
#rb arciel.rekman (indirectly)
#rnx
[CL 14989274 by Martin Ridgers in ue5-main branch]
2021-01-05 05:37:24 -04:00
Martin Ridgers
e5c40b10b8
Trace's analysis' FThreads::GetInfo() was always returning thread 0 (the important "thread"). Since they were marked as important, thread-info events have no longer been sent on the thread the present but instead carry the thread ID in a field.
...
#rb none
#rnx
[CL 14968643 by Martin Ridgers in ue5-main branch]
2020-12-30 06:06:38 -04:00
Martin Ridgers
67d7dcba9b
Homogenised return type of Thread::GetInfo() across all its overloads.
...
#rb none
#rnx
[CL 14968631 by Martin Ridgers in ue5-main branch]
2020-12-30 05:35:41 -04:00
Martin Ridgers
be972be826
Moved the Trace namespace into the UE namespace.
...
#rb jb
#rnx
[CL 14762673 by Martin Ridgers in ue5-main branch]
2020-11-17 06:54:28 -04:00
Martin Ridgers
71f829c710
Simple provision for prefixing metadata at the start of a trace stream
...
#rb jb
#rnx
[CL 14750258 by Martin Ridgers in ue5-main branch]
2020-11-16 04:06:18 -04:00
Martin Ridgers
889b2d647c
Implementation of Trace's important events. Some events are only traced once. CPU scope names or log format strings for example. Those trace-once events get lost if a user then connects to trace late (or reconnects a second time). To combat that important events are traced to a separate stream internally so that they can be identified, cached off to one side, and resent when a connection is first established.
...
#rb johan.berg
#rnx
[CL 14572080 by Martin Ridgers in ue5-main branch]
2020-10-26 03:29:23 -04:00
Marcus Wassmer
3b81cf8201
Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
...
autoresolved files
#rb none
[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
11f5b21210
Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
...
#rnx
[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
Stefan Boberg
55a8b15f1f
Copying //UE4/Dev-Core to Main (//UE4/Main)
...
#rb none
[CL 11258477 by Stefan Boberg in Main branch]
2020-02-05 14:26:36 -05:00
Martin Ridgers
f82864c80a
Explicitly end analysis on exit from the inner loop. Doing it implicitly in the destructor opens up the analysis framework for order of destruction problems.
...
#rb trivial
#rnx
[CL 11154133 by Martin Ridgers in Dev-Core branch]
2020-01-29 08:18:18 -05:00
Thomas Sarkanen
3d5d6697a6
Added TArrayView access support for array fields
...
Also fixed div-by-zero in Num() when a field does not exist
#rb Martin.Ridgers
[CL 11041970 by Thomas Sarkanen in Dev-Core branch]
2020-01-17 07:31:56 -05:00
Johan Berg
6e8c16c4b7
Trace channels
...
This change introduces the concept of "channels" to TraceLog. When an event is emitted a channel now needs to be supplied. Channels are disabled by default and can be be enabled individually, allowing the user to limit the amount of events the tracing application produces. Channels can be enabled by the recording application (e.g. UnrealInsights) or enabled by default using a commandline argument, "-tracechannels" to enable a comma separated list of channels.
There are two new events related to channels, the announce event describing the channel, and the toggle event which notifies any changes in state. Note that all channels are enabled during static initialization in order to guarantee that any event emitted during that phase is recorded.
#rb martin.ridgers, ionut.matasaru
[CL 10950760 by Johan Berg in Dev-Core branch]
2020-01-13 07:16:09 -05:00