For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.11.0/NEWS.
CMake migration
The old server-side build system has been replaced by CMake. The client integration is not affected. Refer to the manual for details.
Most importantly, a known version of the capstone library is now downloaded from GitHub. You will need to have git installed for this to work (there is a CMake option to use the capstone installed on the system, as was done previously).
User text formatting
ZoneText
and ZoneName
macros now have a printf-like variant, denoted with a F
postfix.
Added "Hide external code" option to call stacks
Before:
After:
Aggregation of inline functions
Symbol statistics window now allows aggregation of inlined functions in symbols.
Before:
After:
Relative costs of inline functions
Cost measurements of inlined functions in the symbol statistics window can be now relative to the base symbol instead of total program run time.
After (compare to above images):
Assembly instruction cost
The per-line sampling statistics are now also displayed as a percentage of total program run time.
Linux kernel code
Kernel symbol code retrieval is now also available on Linux.
Faster and smaller trace files
Added support for multiple compression streams in trace files. This effectively parallelizes both load and save operations.
The default save setup is now set to Zstd level 3 with 4 compression streams. This gives both faster compression time and smaller file size.
Tutorial system
New users will be now eased into the profiler with a set of tutorial achievements.
Python bindings
Support for Python integration has been added.
Wayland improvements
To build the profiler GUI with Wayland you now need wayland-scanner
and wayland-protocols
to be installed. A reasonably recent release of the protocols is required. Fractional DPI scaling is now properly supported on Wayland.
Offline symbol resolution
By default, Tracy does symbol resolution during the capture. This can be slow in some circumstances.
Clients built with TRACY_SYMBOL_OFFLINE_RESOLVE
option won't perform live symbol resolution. In such case, the symbol data can be added at a later time, with the update
utility.
Fuzzy matching symbol data for source view
Opening the source code view that has no associated address in code (i.e., from the list of instrumented zones, or from the find zone window) will now search the list of symbols for a function name match. In many cases this will result in displaying the full disassembly view where previously you would only see the source code.
Matching is performed by string comparisons, which in rare cases may result in showing false data. Press ctrl key while opening source view to keep the old behavior.
If more than one matching symbol is found (e.g., if two classes have methods with the same name, or if a template is instantiated in multiple places in code), it is not possible to tell which of the code locations the source location corresponds to and only the source code will be displayed.
Meson integration breaking changes
The tracy_shared_libs
Meson option was removed. Use interface provided by Meson to set the library type instead.
Dropped the tracy_
prefix from Meson options. The tracy_enable
option remains as it was, as it can be inherited from parent projects.
C API breaking changes
ScopedZone
and AllocSourceLocation
now accept color parameter. Impact on existing code should be minimal.
AllocSourceLocation
has a new parameter with a default value.
__tracy_alloc_srcloc
and __tracy_alloc_srcloc_name
break the existing API. This can be easily fixed by setting the last parameter to zero.
GPU resynchronization
It is now possible to resynchronize the CPU and GPU timers, if you are not able to use a calibrated context. This is not exposed as an easy-to-use API and generally should be avoided. Use at your own risk.
Fuchsia import
A new utility, import-fuchsia
has been added to import data from the Fuchsia trace format.
QNX
Basic support for QNX has been added.