mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-30 09:14:36 +00:00
783 lines
36 KiB
Plaintext
783 lines
36 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.
|
|
|
|
|
|
v0.x.x (xxxx-xx-xx)
|
|
-------------------
|
|
|
|
- Cygwin and Mingw are deprecated due to lack of interest.
|
|
- Added TRACY_NO_CALLSTACK_INLINES macro to disable inline functions
|
|
resolution in call stacks on Windows.
|
|
- Limited client query response rate.
|
|
- Improved function matching algorithm in compare traces view.
|
|
- Added minimal CMake integration layer.
|
|
- Reworked rpmalloc initialization.
|
|
- Fixed display of messages with newlines on messages list.
|
|
- Excluded some uninteresting wrapper functions from call stacks (for
|
|
example SIMD pass-through intrinsics to the compiler built-ins).
|
|
- Adjusted coloring of instruction hotness in symbol view.
|
|
- Properly handle rare cases when sampling on Linux is momentary not able to
|
|
resolve time stamps.
|
|
- Added Rocket Lake microarchitectural data.
|
|
- Updated CPU identifier lists.
|
|
- Implemented GPU timer overflow handling heuristics.
|
|
- Assembly instructions are now assigned to inline symbols.
|
|
- You can not only see the assembly source file and line, but also the
|
|
originating function.
|
|
- If symbol view is restricted to a single inline function, all assembly
|
|
instructions not in this context will be dimmed out.
|
|
- Kernel call stacks will be now properly captured and displayed in the
|
|
profiler. Kernel functions are marked with the red color.
|
|
- The CPU hardware performance counters can be now sampled on Linux.
|
|
- Three inferred statistics are displayed for lines in both source and
|
|
assembly code in the symbol view window:
|
|
- Instructions executed per cycle.
|
|
- Branch miss rate.
|
|
- Cache miss rate.
|
|
- Instruction cost estimation method is no longer tied to software call
|
|
stack sampling.
|
|
- The image name filter entry field is now providing a list of available
|
|
images.
|
|
- Reentrant function calls may be not excluded from calculations in the
|
|
statistics view.
|
|
|
|
|
|
v0.7.8 (2021-05-19)
|
|
-------------------
|
|
|
|
- Updated Zen 3 and added Tiger Lake microarchitectural data.
|
|
- Manually disconnecting from the server will no longer display erroneous
|
|
warning message.
|
|
- Added ability to display sample time spent in child function calls.
|
|
- Fixed issue which may have prevented sampling on ARM64.
|
|
- Added TRACY_NO_FRAME_IMAGE macro to disable frame image compression
|
|
thread.
|
|
- Ctrl and shift keys will now modify mouse wheel zoom speed.
|
|
- Improved user experience in the symbol view window.
|
|
- Added support for Direct3D 11 instrumentation.
|
|
- Vulkan contexts can be now calibrated on Linux.
|
|
- Support loading zstd-compressed chrome traces.
|
|
- Chrome traces with multiple PID entries (and possibly conflicting TIDs)
|
|
can be now imported.
|
|
- Added support for custom source location tag ("loc") in chrome traces.
|
|
- Sampling frequency can be now controlled using TRACY_SAMPLING_HZ macro.
|
|
- Trace compression can be now selected when saving a trace.
|
|
- If a trace cannot be saved, a failure dialog will be displayed.
|
|
- Run-time memory usage of frame images can be reduced by calculating
|
|
a compression dictionary. This can be only performed when a trace is saved
|
|
or through the update utility.
|
|
|
|
|
|
v0.7.7 (2021-04-01)
|
|
-------------------
|
|
|
|
- Linux crash handler will now also catch SIGABRT.
|
|
- Fixed invalid name assignment to source files discovered client-side.
|
|
- Added ability to check if a zone is active (which may be used to avoid
|
|
preparing zone text, etc., as it wouldn't be used anyway).
|
|
- Improved sorting behavior of internal vectors.
|
|
- Some data will now be always properly displayed during live capture.
|
|
This was not particularly visible before, as it mainly concerns edge
|
|
cases.
|
|
- Sorting is performed only as needed.
|
|
- In case of plots the performance during live capture may be decreased,
|
|
as these were sorted with at least 0.25 second intervals before. Now
|
|
the sorting is performed every frame.
|
|
- Some other data, which previously was not sorted, is sorted now.
|
|
- In headless capture mode sorting will be only performed when the trace
|
|
is saved to disk.
|
|
- Fixed some typos in macros.
|
|
- Fixed handling of non-ANSI file names on Windows. You can now name your
|
|
traces 'ęśąćż.tracy' and it should work as intended. This is supported on
|
|
Windows 10 release 1903 and newer.
|
|
- Fixed sending GPU context name in on-demand mode.
|
|
- Fixed color channel order in ZoneColor() macro.
|
|
- Handle failure state when a memory pointer allocation is reported twice,
|
|
without an intermediate free.
|
|
- Renamed "call stack parents" to "entry call stacks".
|
|
- Display number of entry call stacks in assembly line sample count tooltip.
|
|
- Added tooltips with preview of source code in various places in the UI.
|
|
|
|
|
|
v0.7.6 (2021-02-06)
|
|
-------------------
|
|
|
|
- Various fixes in build scripts.
|
|
- Fixed a faulty rpmalloc initialization path when the first thing the
|
|
thread did was sending a message with call stack.
|
|
- Added fallback timer define for various virtualized environments, which
|
|
may not be able to access the hardware timer registers. This will result
|
|
in usage of timer provided by the standard library, with reduced
|
|
resolution.
|
|
- Further OpenCL improvements.
|
|
- Updated libbacktrace.
|
|
- Adds Mach-O 64-bit FAT support.
|
|
- Fixes memory corruption when processing Mach-O data.
|
|
- Fixes missing matching entries during binary search.
|
|
- Adds support for MiniDebugInfo.
|
|
- Adds fallback to ELF symbol table if no debug info is available.
|
|
- Various other fixes.
|
|
- Store build time of profiled program in captures.
|
|
- GPU contexts can be now named.
|
|
- Implemented client -> server source code transfer.
|
|
|
|
|
|
v0.7.5 (2021-01-23)
|
|
-------------------
|
|
|
|
- More robust handling of system tracing on Android.
|
|
- Added warning dialog when the connection is lost before all needed data
|
|
can be retrieved.
|
|
- Fixed handling of NaN plot entries (by skipping them).
|
|
- Dynamic zone colors are now supported through the ZoneColor() macro.
|
|
- Fixed Arm machine code printout to match the one printed by objdump.
|
|
- Fixed client memory corruption when using colored messages.
|
|
- Switched to the next-gen ImGui table UI.
|
|
- Table columns can have their order rearranged, can be hidden, can be
|
|
sorted both in ascending and descending order (where appropriate).
|
|
- Table columns state is now preserved between runs.
|
|
- Various fixes related to restricting listening to localhost.
|
|
- Improved compatibility of ETW tracing with non-MSVC compilers.
|
|
- Fixed Vulkan call stack transfer.
|
|
- Added support for transient GPU zones (OpenGL, Vulkan, Direct3D 12).
|
|
- OpenCL fixes for assert-less builds and non-active zones.
|
|
- Added support for thread names and title bar description in traces
|
|
imported from chrome tracing format.
|
|
|
|
|
|
v0.7.4 (2020-11-15)
|
|
-------------------
|
|
|
|
- Added support for user-provided locks to keep dbghelp calls thread-safe.
|
|
- Call stacks can be now copied to clipboard.
|
|
- Allow more control over which automated captures are performed.
|
|
- Added textual descriptions for some assembly instructions.
|
|
- Profiler memory usage is now also displayed as a percentage of available
|
|
physical memory.
|
|
- Microarchitecture mismatch is now clearly displayed in the source view
|
|
window.
|
|
- Added Zen 3 and Cascade Lake microarchitectural data.
|
|
- Ghost zones are now supporting all zone coloring modes and namespace
|
|
shortening.
|
|
- Extend C API to support memory pools.
|
|
- Frame rate targets can be now visually represented on the timeline view.
|
|
|
|
|
|
v0.7.3 (2020-10-06)
|
|
-------------------
|
|
|
|
- Properly support DPI scaling on Linux (requires GLFW 3.3).
|
|
- Added early checks for output file validity in the capture utility.
|
|
- Improvements to presence broadcast handling.
|
|
- Custom zone colors can be optionally ignored.
|
|
- Added support for tracking multiple memory pools.
|
|
- Memory free failure dialog can now show call stack pointing to the failure
|
|
location.
|
|
- Added support for Wayland on Linux.
|
|
- If during the first 5 seconds of the trace there are no frames being
|
|
reported, the profiler will switch to following last 5 seconds of the
|
|
trace, instead of displaying three last frames.
|
|
|
|
|
|
v0.7.2 (2020-09-14)
|
|
-------------------
|
|
|
|
- Note: the bitbucket repository is obsolete and will soon stop receiving
|
|
updates. Migrate to https://github.com/wolfpld/tracy, if you haven't
|
|
already.
|
|
- The "waiting for connection" dialog no longer has "cancel" button. To
|
|
abort connection attempt just use the "close window" button.
|
|
- Added update notification.
|
|
- The most recent traced events can be now viewed regardless of timeline
|
|
zoom level.
|
|
- Fixed going-to-line in source view (again).
|
|
- Crash handling on client is now not performed, if there is no active
|
|
connection.
|
|
- Added ability to listen only on IPv4 interfaces.
|
|
|
|
|
|
v0.7.1 (2020-08-24)
|
|
-------------------
|
|
|
|
- Dropped support for pre-v0.6 traces.
|
|
- Fixed regression on non-AVX2 CPUs.
|
|
- Fixed incorrect calculation of some ghost zones.
|
|
- Added list of cached source files.
|
|
- Added import of plot data.
|
|
- Secure versions of alloc/free macros.
|
|
- Automated tracing of vertical synchronization on Windows.
|
|
- Fixed attachment of postponed frame images.
|
|
- Source location data can be now copied to clipboard from zone info window.
|
|
- Zones in find zones menu can be now grouped by zone name.
|
|
- Vulkan and D3D12 GPU contexts can be now calibrated.
|
|
- Added CSV export utility.
|
|
- "Go to frame" popup no longer has a dedicated button. To show it, click on
|
|
the frame counter.
|
|
- Added macro for checking if profiler is connected.
|
|
- Implemented optional data removal from traces in the update utility.
|
|
- Allow manual management of profiler lifetime.
|
|
- Adjusted priority of ETW threads to time critical.
|
|
- Annotations can be now freely adjusted on the timeline.
|
|
- Limiting time range for find zone functionality has been significantly
|
|
improved.
|
|
- Added time range limits for statistics and symbol view.
|
|
- Implemented call stack sampling on Linux (including Android).
|
|
- Exact time from start of profiling session can be now viewed by hovering
|
|
the mouse over the time scale.
|
|
- Code transfer can be now compiled-out.
|
|
- Added support for zone markup in unloadable modules.
|
|
- Added image name filter to sampling statistics results window.
|
|
|
|
|
|
v0.7 (2020-06-11)
|
|
-----------------
|
|
|
|
This is the last release which will be able to load pre-v0.6 traces. Use the
|
|
update utility to convert your old traces now!
|
|
|
|
- chrome:tracing importer now imports zone metadata from "args" key.
|
|
- Added display of statistical mode to find zone menu.
|
|
- Automatic stack sampling is now available on windows.
|
|
- Properly handle tracing on long-running systems.
|
|
- Message list entries can now show associated frame image.
|
|
- Call stack window will now display module names.
|
|
- Symbol location in call stack window may now also display symbol address.
|
|
- Statistics menu can now be used to display call stack sampling data or
|
|
list available symbols.
|
|
- All call paths leading to the sampled instruction in a call stack can be
|
|
now displayed.
|
|
- Frame image compression ratio (lossless in-memory compression, not taking
|
|
into account DXT compression) is displayed in playback window.
|
|
- Allow reconnection straight from the discard data dialog.
|
|
- Added ability to set custom names for locks.
|
|
- Improved handling of network ports.
|
|
- Added time percentage display to instrumentation statistics.
|
|
- Display of ghost zones (generated from automated call stack sampling).
|
|
- Notify when empty labels display is enabled.
|
|
- Small fragments of executable code will be now sent from client to server.
|
|
- Added notification about query backlog.
|
|
- Fixed performance problem with query backlog.
|
|
- Display number of in-flight queries, in addition to query backlog.
|
|
- Improved failure reports.
|
|
- The capture utility will connect to localhost by default.
|
|
- Added optional support for QPC timer on windows.
|
|
- Complete rewrite of source file viewer. It is now 100% reliable when going
|
|
to a source location.
|
|
- Symbol source view was added.
|
|
- Extension of source file viewer.
|
|
- Can display source file, assembly view, or both at the same time.
|
|
- May include display of statistical profiling data.
|
|
- Ability to switch between source files which were used to build the
|
|
symbol.
|
|
- Ability to switch between inlined functions which are incorporated into
|
|
the symbol.
|
|
- Graphical representation of control flow in program.
|
|
- Display of micro-architectural data for each assembly instruction.
|
|
- Tracking register dependencies between assembly instructions.
|
|
- Disassembly may be saved to a file, in order to be processed by external
|
|
tools.
|
|
- If the default listening port is occupied, profiler will now try listening
|
|
on other ports.
|
|
- Added possibility to perform source file names substitution.
|
|
- Profiler windows can be now docked.
|
|
- CPU usage tooltip now displays a list of running threads.
|
|
- Added possibility to filter discovered clients list.
|
|
- Source files are now cached during capture.
|
|
- Profiler will now display a popup when application crashes.
|
|
- Added ability to send simple integral values as extra payload for zones.
|
|
- Per-frame zone times on the frames plot can now display self time.
|
|
- Ability to bind only on localhost interface.
|
|
- OpenCL profiling.
|
|
- Direct3D 12 profiling.
|
|
|
|
|
|
v0.6.3 (2020-02-13)
|
|
-------------------
|
|
|
|
- Fixed performance issues with loading saved traces on Ryzen CPUs.
|
|
- Profiler window contents are now properly updated during window resize.
|
|
- Improved tid to pid mapping on windows.
|
|
- Zero length and unfinished zones are no longer taken into account for
|
|
statistics.
|
|
- Build files for shared library are now available (experimental).
|
|
- GPU zones now also have "active" parameter.
|
|
- Further reduction of memory usage and on-disk trace size.
|
|
- Replaced ska::flat_hash_map with robin-hood-hashing.
|
|
- Speed-up rendering of long lists of items.
|
|
- Exact event time is displayed in some places in the UI.
|
|
- Memory allocation lists can now be sorted.
|
|
- Added display of trace file compression ratio.
|
|
- Optional Zstd compression of trace files.
|
|
- Frame images are now internally compressed using Zstd (instead of LZ4).
|
|
- Fix display of continuous frame set tooltips.
|
|
|
|
|
|
v0.6.2 (2019-12-30)
|
|
-------------------
|
|
|
|
- Improved call stack decoding on OSX.
|
|
- Collection of CPU topology data.
|
|
- C API now supports allocated source locations.
|
|
- Added chrome:tracing importer.
|
|
- Allow merging of ZoneText() strings.
|
|
- Time distribution can now show both exclusive and inclusive times.
|
|
- Display proper value of selection time in find zone menu.
|
|
- Implemented limiting find zone search to a specified time range.
|
|
- Highlight hovered zone from find zone menu zone list on the histogram.
|
|
- Allow copying user data directory location to the clipboard.
|
|
|
|
|
|
v0.6.1 (2019-11-28)
|
|
-------------------
|
|
|
|
- Dropped support for pre-v0.5 traces.
|
|
- Improve BSD support.
|
|
- GPU zone CPU thread highlight will now highlight whole thread, not only
|
|
the thread name.
|
|
- Added CPU thread highlight for CPU data items.
|
|
- Client parameters may be now set from the server.
|
|
- Minor UI fixes.
|
|
|
|
|
|
v0.6 (2019-11-17)
|
|
-----------------
|
|
|
|
This is the last release which will be able to load pre-v0.5 traces. Use the
|
|
update utility to convert your old traces now!
|
|
|
|
- Dropped support for pre-v0.4 traces.
|
|
- Major memory usage decrease.
|
|
- Significant network bandwidth decrease.
|
|
- 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.
|
|
- Thread activity regions can be graphed on the timeline.
|
|
- 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.
|
|
- System-wide workload distribution is now plotted on the timeline.
|
|
- Added "CPU data" 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 depth and thread or source
|
|
location.
|
|
- Thread colors are displayed across the profiler application.
|
|
- Frame times can be now compared.
|
|
- Expose more lock handling functionality.
|
|
- Network port can be now specified by the user.
|
|
- Proper handling of multithreaded Vulkan code.
|
|
- Added extreme compression level in update utility.
|
|
- Added time distribution data in the zone information window.
|
|
- Trace file name is now displayed in trace information window.
|
|
- Annotations can be now added to the timeline.
|
|
- Server now performs network data retrieval and decompression on a dedicated
|
|
thread.
|
|
- Added examples of Tracy integration.
|
|
- Allow grouping of zones in the find zone menu by zone parent or with no
|
|
grouping.
|
|
- Zone list in the statistics window can be now filtered.
|
|
- Implemented configuration of plots.
|
|
- Messages can now collect call stacks.
|
|
|
|
|
|
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 (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.
|