Skip to content

Tracy Profiler 0.11

Compare
Choose a tag to compare
@wolfpld wolfpld released this 16 Jul 17:36
· 301 commits to master since this release
0753956

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).

f55f70d97229eeda

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:

cffe07569f3cf908

After:

33c5617e3d1f6495

Aggregation of inline functions

Symbol statistics window now allows aggregation of inlined functions in symbols.

Before:

Zrzut ekranu_20240716_190325

After:

Zrzut ekranu_20240716_190410

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):

Zrzut ekranu_20240716_191217

Assembly instruction cost

The per-line sampling statistics are now also displayed as a percentage of total program run time.

Zrzut ekranu_20240716_191736

Linux kernel code

Kernel symbol code retrieval is now also available on Linux.

c6f7cb95d22784c4

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.

eb96ccb35e58cb26

Tutorial system

New users will be now eased into the profiler with a set of tutorial achievements.

2e897d0385915376

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.

Zrzut ekranu_20240716_193258

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.