mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-26 16:04:34 +00:00
424 lines
20 KiB
Plaintext
424 lines
20 KiB
Plaintext
Note: There is no guarantee that version mismatched client and server will
|
|
be able to talk with each other. Network protocol breakages won't be listed
|
|
here.
|
|
|
|
Note: Release numbers are nothing more than numbers. There are some
|
|
"missing" versions due to trace file changes during development. This is not
|
|
a mistake.
|
|
|
|
v0.6 (xxxx-xx-xx)
|
|
-----------------
|
|
|
|
- Dropped support for pre-v0.4 traces.
|
|
- Implemented context switch capture on selected platforms.
|
|
- Zone timings in various UI places can now take into account only the
|
|
time when the thread was executing.
|
|
- Zone information window can now display regions in which thread was
|
|
suspended by the operating system.
|
|
- CPUs on which the zone was running are enumerated.
|
|
- API breakage: SetThreadName() now only works on current thread.
|
|
- Fixed thread name retrieval after thread is destroyed.
|
|
- Added number of CPU cores to host info.
|
|
- Limited number of possible source locations to 64K.
|
|
- Limited supported capture length to 1.6 days.
|
|
- CPU cores are now displayed on the timeline.
|
|
- Thread execution workload is displayed, including threads from external
|
|
programs.
|
|
- Thread migrations across CPU cores can be graphed.
|
|
- Added "CPU data" window (accessible from the trace info window), showing
|
|
programs competing for CPU during the capture.
|
|
- Switched to using native thread identifiers (relatively small numbers), as
|
|
opposed to pthreads identifiers, which in reality were pointers.
|
|
- Improved thread name discovery if context switch capture is enabled.
|
|
- Per-trace state is now preserved between profiling sessions:
|
|
- Timeline view position.
|
|
- Item categories draw/hide settings.
|
|
- Timeline zones will be highlighted using a different color, when a
|
|
matching time range is selected on histogram.
|
|
- Per-frame zone times are now displayed on the frames plot when a zone is
|
|
selected in the find zone menu.
|
|
- Zone color is now displayed in zone information window.
|
|
- Zone colors can now be determined basing on thread and depth.
|
|
- Frame times can be now compared.
|
|
- Expose more lock handling functionality.
|
|
- Network port can be now specified by the user.
|
|
|
|
v0.5 (2019-08-10)
|
|
-----------------
|
|
|
|
This is the last release which will be able to load pre-v0.4 traces. Use the
|
|
update utility to convert your old traces now!
|
|
|
|
- Major decrease of trace dump file size.
|
|
- Major optimizations across the board.
|
|
- Vcpkg is now used for library management on Windows.
|
|
- Display dump file size change in the update utility.
|
|
- Added notification area.
|
|
- Display trace loading time.
|
|
- Display background processing tasks after trace is loaded.
|
|
- Display trace save notification.
|
|
- Show crash icon, if there was a crash.
|
|
- Added C API.
|
|
- Profiling session may now gracefully terminate, due to incorrect
|
|
instrumentation. A popup with termination reason will be displayed.
|
|
- Call stack improvements.
|
|
- Call stack frames now have a proper source file and file line
|
|
information on Linux.
|
|
- Single call stack frame may now have multiple entries, representing
|
|
inlined function calls.
|
|
- Call stack grouping in the find zone menu now has a special display
|
|
mode.
|
|
- Call stack memory allocations tree improvements:
|
|
- Add top-down variant to complement the previously available bottom-up
|
|
one.
|
|
- Add ability to group tree nodes by function name.
|
|
- Allow restricting tree to display only active allocations.
|
|
- Added support for Lua call stack capture.
|
|
- Self time of zones may be now displayed in the find zone menu.
|
|
- Added ability to disconnect from a client.
|
|
- Find zone groups can now be sorted by mean time per call.
|
|
- Zones displayed in the find zone menu can be now grouped by order of
|
|
appearance, execution time or name.
|
|
- Time is now displayed without trailing fractional zeros (e.g. "2.5 ms"
|
|
instead of "2.50 ms").
|
|
- Child zones displayed in zone info window can be now grouped by source
|
|
location.
|
|
- Selected or hovered lock is now highlighted on the timeline.
|
|
- Locks are now grouped into single and multithreaded (contended and
|
|
uncontended) in the options menu locks list.
|
|
- On broken platforms the profiler can now be initialized as needed (and
|
|
possible), taking a performance and functionality hit.
|
|
- User experience improvements in the graphical profiler.
|
|
- Thread position and height is now animated, to eliminate flickering that
|
|
was happening when depth of displayed zones was changing.
|
|
- Zooming in/out using the mouse wheel is now animated.
|
|
- Plot range adjustment is now animated.
|
|
- Various other UI improvements.
|
|
- System CPU usage is now being monitored.
|
|
- Threads that have nothing to display in the current view are now hidden by
|
|
default.
|
|
- Dimmed-out the timeline outside the profiling area.
|
|
- Source file view can now be opened also from statistics menu.
|
|
- Display standard deviation in find zone and compare traces menus.
|
|
- Display zone messages in zone information window.
|
|
- Display order of threads can be changed in the options menu.
|
|
- Prevent deadlocks by querying socket send buffer size.
|
|
- Frame set statistics can be now limited to frames visible on the screen.
|
|
- Messages can be now colored.
|
|
- Zone selection in compare traces menu can be now linked to the other
|
|
trace.
|
|
- Added support for frame image (screen shot) storage.
|
|
- Implemented ability to cut off outliers on histograms.
|
|
- Zone or frame that is currently hovered by the mouse cursor will be
|
|
highlighted on the histogram.
|
|
- Server now displays available clients in the local network.
|
|
- Source code whitespace visibility can now be enabled or disabled.
|
|
- Profiler will now check if proper timer readings can be performed on
|
|
x86/x64.
|
|
- Application can now log app-specific information, similarly to how the
|
|
host info reports system information.
|
|
- Message list will automatically scroll down to the most recent message.
|
|
- Feature will disable when the list is scrolled by user.
|
|
- To re-enable, scroll to the bottom of the list.
|
|
- Message list can be now filtered.
|
|
- A notification popup will be displayed during trace cleanup.
|
|
- Source file view won't be available if a source file is newer than the
|
|
capture.
|
|
- Added ability to set custom trace descriptions.
|
|
- Added frame time target lines.
|
|
- FPS counts are now displayed next to frame times.
|
|
- GPU drift value can be now automatically measured.
|
|
- Connection window is now a popup hidden under a dedicated button.
|
|
|
|
v0.4.1 (2018-12-30)
|
|
-------------------
|
|
|
|
- Active frame set can be now switched by clicking on a frame set on the
|
|
timeline.
|
|
- Add ability to go to a specified frame.
|
|
- Most commonly used addresses can be now selected from the drop-down menu.
|
|
- Fixed corner case problem with profiler initialization on Windows.
|
|
- Added third state (stopped) to the pause/resume button. It will be used
|
|
after the connection to the client is terminated.
|
|
- Active trace can be discarded.
|
|
- Call stack capture may be forced through TRACY_CALLSTACK define.
|
|
- Lock info window has been added.
|
|
- Time of lock creation and termination is now being tracked.
|
|
- Menu bar buttons are now toggles that can also close their corresponding
|
|
windows.
|
|
- Find zone and compare menu improvements.
|
|
- Ability to ignore case during search.
|
|
- Pressing enter key will now start search, just like pressing the "find"
|
|
button.
|
|
- Using the ^F keyboard shortcut will open the find zone menu and focus
|
|
the input box.
|
|
- Added ability to automatically connect to an IP address in the graphical
|
|
profiler application (use "-a address" argument to enable).
|
|
- Pressing enter key after entering client address in the welcome dialog
|
|
will now automatically begin connection process.
|
|
|
|
v0.4 (2018-10-09)
|
|
-----------------
|
|
|
|
- Renamed "standalone" utility to "profiler".
|
|
- Added trace update utility, which will convert files saved in previous
|
|
versions of tracy to be up-to-date.
|
|
- Optional high compression (--hc) mode is available that will increase
|
|
the compression level, at the cost of considerably longer compression
|
|
time.
|
|
- Fix regression causing varying size of profiler window for different
|
|
captures.
|
|
- Added support for on-demand tracing.
|
|
- If a client application is compiled with the TRACY_ON_DEMAND macro
|
|
defined, tracing will not begin until a connection to server is
|
|
established.
|
|
- Since data is not fully captured in this mode, the resulting trace will
|
|
be less precise, until application state is appropriately reset. For
|
|
example, locks need to be fully released, zone stacks need to be
|
|
flushed. This is an automatic process.
|
|
- All tracing macros are able to work in the on-demand mode.
|
|
- Improved compatibility with various system setups.
|
|
- Aside from using TRACY_NO_EXIT define you can also set the same-named
|
|
environmental variable to 1 to get the same effect.
|
|
- Added ability to show/hide all threads and plots.
|
|
- Performance improvements.
|
|
- Improvements to memory data presentation.
|
|
- Added memory allocation info window.
|
|
- Selecting memory allocation on a plot will draw time range of the
|
|
allocation.
|
|
- Middle clicking on an memory allocation address (or on a button in
|
|
memory allocation info window) will zoom the view to the allocation
|
|
range.
|
|
- Find zone menu improvements:
|
|
- Zones can be now also grouped by call stacks.
|
|
- Zone groups can be now also sorted by time spend in each zone.
|
|
- Zone groups list now displays group times.
|
|
- Average and median zone times are now displayed on the histogram.
|
|
- Selected zones will be highlighted on the timeline view.
|
|
- Added named versions of tracing macros that allow specifying scoped
|
|
variable name.
|
|
- The main profiler window is now kept at the bottom of windows stack.
|
|
- The "profiler" utility will now use a custom embedded font.
|
|
- Microseconds are now displayed using correct symbol ('μ' instead of 'u').
|
|
- Unix builds of the "profiler" utility will now ask for a file name when
|
|
saving a trace.
|
|
- Progress popup is now displayed when a trace file is loading.
|
|
- Zones that share source location with a zone that is hovered over are now
|
|
highlighted.
|
|
- Added ability to zoom-in to a selection range made using middle mouse
|
|
button.
|
|
- Holding the ctrl key will switch to zoom-out mode.
|
|
- The "profiler" utility will use less resources when its window is
|
|
out-of-focus or minimized.
|
|
- Added support for cross-DLL profiling.
|
|
- Items in options menu (locks, threads, etc.) are now described with number
|
|
of events.
|
|
- Source location of lock declaration is also provided.
|
|
- Created an extensive user manual for the profiler.
|
|
- Added ability to capture multiple frame sets.
|
|
- Viewer will display multiple frame ranges at once.
|
|
- Only one frame set can be active at once. The selected one is used for
|
|
the frame navigation graph, frame navigation buttons and drawing frame
|
|
separators.
|
|
- The active frame set will be highlighted, and the rest will be dimmed
|
|
out.
|
|
- Frames can now also be discontinuous.
|
|
- Frames and zones too small to be displayed will be marked with a zig-zag
|
|
pattern.
|
|
- General improvements to message list and message markers.
|
|
- Hovering over message on a list will highlight its marker (previously it
|
|
only worked the other way).
|
|
- Left clicking on a message marker will focus the message list on the
|
|
selected message.
|
|
- Middle clicking on a message marker will center it on screen.
|
|
- Added trace information window.
|
|
- This includes frame time statistics and histogram.
|
|
- Displayed memory sizes are now properly formatted.
|
|
- Added call stack tree for memory allocations.
|
|
- You can display allocations list for each call stack tree entry.
|
|
- The source code of the profiled application may now be viewed in the
|
|
profiler.
|
|
- BIG FAT WARNING: The actual profiled program source code is not known to
|
|
the profiler. It only checks if there is a file on your disk that
|
|
matches the file name of the captured source location. Even if the file
|
|
is displayed, it may be out of date.
|
|
- CPU and GPU zones will have "Source" button, if source file can be
|
|
opened.
|
|
- Source files for call stack traces can be opened by right-clicking on
|
|
the file name. Since in this case there is no button that can be hidden,
|
|
a small animation will be played to notify user if the source cannot be
|
|
opened.
|
|
- The main profiler view will now occupy the whole window. Previous behavior
|
|
is still available for embedded use cases.
|
|
- Many button labels are now accompanied by icons.
|
|
- Fonts should now be less blurry.
|
|
- "Go to parent" button in zone info window won't be displayed if there is
|
|
no parent to go to.
|
|
- Improvements to the compare traces menu.
|
|
- There are now colored markers to make it easier to distinguish "this" and
|
|
"external" traces.
|
|
- The amount of saved time is now displayed (a difference between total
|
|
run times of both traces).
|
|
- Tracy will now collect host information, like CPU name, amount of system
|
|
memory, etc.
|
|
- Windows builds of the "profiler" utility will perform a check of supported
|
|
CPU instruction set and match it against the one required by the binary
|
|
(by default AVX2 is used). If the program cannot be executed on the
|
|
processor, a message dialog with workaround instructions will be
|
|
displayed.
|
|
- Tracy can intercept crashes and finish sending data from a dying process.
|
|
- Currently this is only implemented on Windows, Linux and Android.
|
|
- Call stack window may now display addresses of the frames, instead of
|
|
source file locations.
|
|
- Memory events will now properly register their thread.
|
|
- Profiler settings are now stored in a persistent location.
|
|
- On Windows settings are stored in %APPDATA%/tracy.
|
|
- On other platforms settings are stored in $XDG_CONFIG_HOME/tracy or
|
|
$HOME/.config/tracy, if the variable is not set.
|
|
- The main profiler window position, size and maximized state are saved
|
|
and restored.
|
|
- The size and position of internal windows now doesn't depend on the
|
|
runtime directory of the profiler executable.
|
|
- Added connection handshake.
|
|
- Server won't be able to connect to client if there's a protocol version
|
|
mismatch.
|
|
- Client not in on-demand mode will refuse connections after the first
|
|
connection was made and the initial event buffers were cleared.
|
|
- A single server will no longer try to connect to multiple clients.
|
|
- The capture utility will now display time span of the ongoing capture.
|
|
|
|
|
|
v0.3.3 (2018-07-03)
|
|
-------------------
|
|
|
|
- Breaking change: the format of trace files has changed.
|
|
- Previous tracy version will crash when trying to open new traces.
|
|
- Loading of traces saved by previous version is supported.
|
|
- Tracy will no longer crash when trying to load traces saved by future
|
|
versions. Instead, a dialog advising to update will be displayed.
|
|
- Tracy will no longer crash in most cases when trying to open files that
|
|
are not traces. Some crashes are still possible, due to support of old,
|
|
header-less traces.
|
|
- Ability to track every memory allocation in profiled program.
|
|
- Allocation event queuing must be done in order, which requires exclusive
|
|
access to the serialized queue on the client side. This has no effect on
|
|
the rest of events, which are stored in a concurrent queue, as before.
|
|
- You can search for a memory address and see where it was allocated, for
|
|
how long, etc. This lists all matching allocations since the program was
|
|
started.
|
|
- All active (non-freed) allocations may be listed. This shows the current
|
|
memory state by default, but can go back to any point in time.
|
|
- Graphical representation of process memory map may be displayed. New
|
|
allocations/frees are displayed in a bright color and fade out with
|
|
time. This feature also can look back in time.
|
|
- Memory usage plot is automatically generated.
|
|
- Basic allocation information is displayed in memory plot tooltips.
|
|
- A summary of memory events within a zone (and its children) is now
|
|
printed in zone info window.
|
|
- Support loading profile dumps with no memory allocation data (generated by
|
|
v0.2).
|
|
- Added ability to display global statistics of a selected zone from the
|
|
zone info window.
|
|
- Fixed regression with lock announce processing that appeared during
|
|
worker/viewer split.
|
|
- Allow selecting/unselecting all locks for display.
|
|
- Performance improvements.
|
|
- Don't save unneeded lock information in trace file.
|
|
- Don't save thrash in message list data.
|
|
- Allow expanding view span up to one hour, instead of one minute.
|
|
- Added trace comparison window.
|
|
- An external trace has to be loaded first.
|
|
- Zone query in both traces (current and external).
|
|
- Both results are overlaid on the same histogram.
|
|
- Graphs can be adjusted as-if there was the same number of zones
|
|
collected.
|
|
- Read time directly from a hardware register on ARM/ARM64, if possible.
|
|
- User-space access to the timer needs to be enabled in the kernel, so
|
|
tracy will perform run-time checks and fallback to the old method if the
|
|
check fails.
|
|
- Prevent connections in a TIME-WAIT state from blocking new listen
|
|
connections.
|
|
- Display y-range of plots.
|
|
- Added ability to unload traces loaded from files. To do so close the main
|
|
profiler window. You will return to the connect/open selection dialog.
|
|
Live captures cannot be terminated this way.
|
|
- Zones previously displayed in zone info window are remembered and you can
|
|
go back to them. Closing the zone info window or switching between CPU and
|
|
GPU zones will clear the memory.
|
|
- Improved message list window.
|
|
- Messages are now displayed in columns.
|
|
- Originating thread of each message is now included in the list.
|
|
- Messages can be filtered by the originating thread.
|
|
- You can now navigate to next and previous frame.
|
|
- Zone statistics can be now displayed using only self times.
|
|
- Support for tracing GPU events using Vulkan.
|
|
- Timeline will now display "OpenGL context" or "Vulkan context" instead of
|
|
"GPU context".
|
|
- Fixed regression causing invalid display of GPU context appearance time.
|
|
- Fixed regression causing invalid reporting of an active CPU in zone end
|
|
events, if MSVC rdtscp optimization was not enabled.
|
|
- Ability to collect true call stacks.
|
|
- Supported on Windows, Linux, Android.
|
|
- The following events can collect call stacks:
|
|
- Memory alloc/free.
|
|
- Zone begin.
|
|
- GPU zone begin.
|
|
- Zone stack trace now also displays frames from a real call trace.
|
|
- On Linux call stack frame name resolution requires a call to dladdr,
|
|
which in turn requires linking with libdl.
|
|
- Allow manual entry of GPU time drift value.
|
|
- Unix build system no longer shares object files between different build
|
|
units.
|
|
- Fixes inability to build debug and release versions of a single utility
|
|
without "make clean".
|
|
- Fixes incompatibility between "standalone" and "capture" utilities due
|
|
to different set of used feature flags.
|
|
- On Windows "standalone" utility now adapts to system DPI setting.
|
|
- Optional per-call zone naming.
|
|
|
|
|
|
v0.2 (2018-04-05)
|
|
-----------------
|
|
|
|
- Fixed broken TRACY_NO_EXIT behavior.
|
|
- Visual refresh (new color scheme).
|
|
- Added optional support for live in-depth zone analysis.
|
|
- Ability to search for zones matching a query.
|
|
- Histogram of zone time spans.
|
|
- List occurrences of a zone, grouped by thread, or by user text.
|
|
- Zone groups can be selected and highlighted on histogram graph.
|
|
- Support for linear and logarithmic display of time and values.
|
|
- Histogram bins can show zone counts or total execution time.
|
|
- Listed zones can be narrowed down by data range selection on histogram.
|
|
- Separation of server data handling code from the visualisation.
|
|
- Implementation of a command line capture utility.
|
|
- Support libraries have been updated.
|
|
- Fixed an issue that prevented de-duplication of source location payloads.
|
|
- Fixed an issue that prevented the ability to disable threads in settings
|
|
menu, if two threads had the same name.
|
|
- Performance optimizations.
|
|
- Visual clean up of the settings menu.
|
|
- Zone info windows improvements.
|
|
- Visual improvements to zone info window child list.
|
|
- Zone info windows now show zone thread.
|
|
- Display zone stack trace.
|
|
- Hide pause/resume button if there's no data connection (i.e. trace was
|
|
loaded from file).
|
|
- Source location statistics view has been added.
|
|
- Fixed crash when a saved trace was opened, but no trace capture session
|
|
was performed before.
|
|
- Standalone server will now open trace files passed as an argument to the
|
|
executable.
|
|
- Fix possible crash in SetThreadName, that could happen if TLS init was
|
|
delayed until first use of thread local variable.
|
|
- Store full thread name if pthreads (with 15 character name limit) are
|
|
used.
|
|
- Properly handle unaligned memory access (no performance impact).
|
|
- Fixed broken lock identifiers in try_lock().
|
|
|
|
|
|
v0.1 (2017-12-18)
|
|
-----------------
|
|
|
|
- Initial release.
|