Skip to content

Releases: wolfpld/tracy

Tracy Profiler 0.11.1

22 Aug 18:21
5d542dc
Compare
Choose a tag to compare
  • Utilities import-chrome and import-fuchsia now live together in the import directory.
  • Added TRACY_VERBOSE to available CMake options.
  • It is now possible to set TRACY_SAMPLING_HZ via a environment variable.
  • Thread group hints can be now used to group threads together in the profiler UI.
  • Limit Lua file names to 255 characters, as the source string can contain the whole script, if loaded with loadstring().

Tracy Profiler 0.11

16 Jul 17:36
0753956
Compare
Choose a tag to compare

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.

Tracy Profiler 0.10

16 Oct 19:38
37aff70
Compare
Choose a tag to compare

For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.10/NEWS.

System power usage

Under Linux, Tracy will now report how much power the system is using. The specifics of what is measured depends on what the hardware is capable of reporting.

01

Error markers removal

Zone error markers (red regions and error bars) have been removed to be consistent with how all other profiling events are displayed.

02

Major overhaul of how timeline items are processed in GUI

See https://wolf.nereid.pl/posts/how-tracy-faster/ if you are interested in more details.

Global configuration settings dialog

You can find it in the profiler's about menu (the wrench icon in the welcome dialog).

03

Trace description or filename is now displayed on the window title bar

04

History of viewed symbols

You can go back to previously displayed symbols in the symbol view. Currently the history granularity is at the symbol level.

05

Improvements in csvexport

You can now export messages and thread identifiers of zones.

GPU tracing improvements

Vulkan contexts can now use the VK_EXT_host_query_reset extension and Vulkan symbols can be dynamically loaded. The D3D11 and D3D12 instrumentation has been rewritten.

Support for running under rr

If you need to run a profiled application under the rr debugger, you can now use the TRACY_PATCHABLE_NOPSLEDS to make the instrumentation more efficient.

Custom program name support

You can now use the TracySetProgramName() macro to set a custom program name to be sent by the client. You may find this useful if you need to run the same executable in different roles, e.g. one executable would identify itself as a game server, the other as a game client, and so on.

Tracy Profiler 0.9.1

26 Feb 15:08
897aec5
Compare
Choose a tag to compare

For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.9.1/NEWS.

Source diff when comparing traces

Compare traces menu can now display source code differences between two traces.

02

Improvements to assembly listings

Listings are now annotated with source line information. To improve compatibility with external tools comments are now prefixed with '#' instead of ';'.

03

Histogram tooltip will now also show left/right counts.

04

Timeline handling improvements

Tracy now actively manages timeline vertical scroll offset in order to keep the thread under the mouse cursor in the same place on screen.

See the following video:

Jump and call target queries

Tracy will now query jump and call target addresses. This enables discovery of target function names, even if such function has no samples and is not present in any call stack.

Instead of call 0x7ff61a5380c0 you will now more often see the following:

05

Native Wayland support

Tracy on Linux now targets and requires Wayland by default. Other platforms still use GLFW.

Pass LEGACY=1 parameter to make, if you want to instead rely on the GLFW library, like before.

Please don't ask about window decorations on Gnome. Current behavior is the intended behavior. Gnome does not want windows to have decorations, and Tracy respects this choice. If you find this problematic, use a desktop environment that actually listens to its users.

Privilege warning

Added warning when the profiler interface is run with privilege elevation. Advice is given to instead run the client with admin rights.

01

Tracy Profiler 0.9

26 Oct 22:04
5a1f537
Compare
Choose a tag to compare

For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.9/NEWS.

Breaking changes

  • All the header and source files used for integrating Tracy with applications were moved to the public/ directory. This will break your integration!
    • To fix this, update the source and include directories lists to point to the new location.
    • Tracy include files directly referenced by the client were moved to tracy/ subdirectory, to facilitate setups which previously had Tracy checkout parent directory in the include paths list (i.e. when you included "tracy/Tracy.hpp").
    • Previously, if you have included the Tracy checkout directory in your project include directories list (i.e. you could include "Tracy.hpp"), this could result in third-party library conflicts, e.g. with ImGui. Such scenarios are no longer the case.
  • Tracy macros now require to be terminated with a semicolon.
  • The undocumented ___tracy_demangle() function API has been changed. Please refer to the source code for further instructions.
  • The parameter callback and its registration macro have been extended to include user data pointer. You will need to update your code accordingly.
  • The API for TracyPlotConfig() macro has been changed. Please refer to the manual to see how you can fix this.

Plots visualization improvements

  • Each plot now has its own color, which can also be defined by the user.
  • The area below the plot is now optionally filled with a color.
  • Plots can now also be configured to be staircase instead of smooth. This new setting is appropriate for many inputs where only discrete values make sense, e.g. the memory allocation plot.

1

Frame time target

The range of frame bar colors in the frames overview on top of the screen can be now controlled with the "Target FPS" entry box in the options menu.

3

Zone name shortening

Previously zone name shortening supported only namespace removal, in a way that didn't consider function parameters or template arguments. The new shortening rules first perform normalization of the function name:

  • The function const qualifier is removed.
  • Common return types are removed.
  • All function parameters and all template arguments are removed.

The next steps consist of repeated removal of namespaces, starting with the most outermost one. While the old process was all or nothing, the new implementation by default will dynamically adjust to the space available, trying to show the most context possible.

Previously shortening was only applied to the zone names displayed on the timeline. Currently this process will also apply to all other places in the UI where function names are displayed.

4

Path normalization

Symbol file paths are now normalized on libbacktrace systems. For example, instead of /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/bits/std_mutex.h Tracy will now report such file as /usr/include/c++/12.2.0/bits/std_mutex.h.

Symbol view improvements

  • Assembly view is now in color.

6

  • Added microarchitecture data for Zen 4.
  • Implemented optional propagation of inline cost down the local call stack. This feature may be useful when trying to get a general outlook of the cost at the top-level function in the symbol. On the image below notice that in the inserted fragment, which has this option enabled, the hidden cost of ring.GetTail() is attributed to the calling line.

7

  • Reversed mouse button assignments for jumping to source / assembly line in symbol view. The left mouse button will now focus the target line.
  • Assembly lines tooltip will now display local call stack of inline functions (within the symbol).

8

  • Right-clicking the source location entry in assembly line will show the local call stack, along with source code preview of each entry and ability to navigate to any selected inline function.

9

Various improvements

  • If a client with an incompatible protocol is discovered, Tracy will now try to show which versions can be used to handle the connection.

2

  • Messages list in zone info window can now show messages exclusive to the zone, filtering out the messages emitted from child zones.
  • Added capture of vertical synchronization timings on Linux.
  • Added context menu for timeline labels. Currently the only option is to hide the selected thread, plot, etc.
  • You can now provide custom source file contents through a profiler callback. This enables profiler access to files contained in your custom data files, etc.

5

  • Timeline can be now navigated with WASD keys.
  • The import-chrome utility interprets Instant (i/I) events where the name field contains the word frame as a frame event. The name is the frame set name.
  • The profiler UI will no longer unnecessarily redraw the screen if nothing was changed. This should have a profound impact on power usage.
  • Available clients now also broadcast their PID.
  • The profiler UI will now indicate that it needs attention if the window is not focused and something interesting happens. For example when a connection is established, or when a saved trace finishes loading, etc.

Tracy Profiler 0.8.2

28 Jun 16:15
a8511d3
Compare
Choose a tag to compare
  • Added support for debuginfod debug information services. Note that since this depends on proper system configuration, vendors providing the debug information, and network retrieval, it is disabled by default. To enable, compile the profiled application with the TRACY_DEBUGINFOD define and link with libdebuginfod.
  • When Tracy server-side utilities are build with MSVC, the required libraries will be now automatically retrieved and built with vcpkg.
  • Added microarchitecture data for: Bonnell, Airmont, Goldmont, Goldmont Plus, Tremont.
  • Recognize additional CPUIDs of Zen 3, Alder Lake, Ice Lake microarchitectures.
  • Assembly line width will be now extended, if needed. Previously the line width was calculated for the initial layout and changing amount of displayed data (especially listing the read/written registers) didn't affect this, which may have made some lines partially unreadable.
  • Added ability to filter call stacks in memory tab by inactive allocations. Filtering by inactive allocations helps to pinpoint wasteful allocations in the program.
    3
  • Plot graph will no longer display min/max values interpolated for animation, but rather true values.
  • The CPU topology tree structure was replaced by a CPU schematic showing the same thing in a more concise way.
    1
    2

Tracy Profiler 0.8.1

21 Apr 17:30
80f6a93
Compare
Choose a tag to compare
  • Support for pre-0.7 traces has been dropped.
  • Update utility can now scan for source files missing in the trace cache, if the '-c' parameter is given. Found files will be added to the cache.
  • Added high-priority queue for fast queries to bypass slow symbol queries.
  • Fixed Android documentation to show how to enable context switch tracing.
  • Workaround MSVC 2015 stupidity which prevented compilation as C++11.
  • Added support for showing branch cost data for CPUs that don't report branch retirement events (but do report branch misses).
  • The right-click context menu available for jump arrows in the symbol view window will now additionally display jump context, i.e. jump sources and jump target source code fragments.
  • Added freedesktop.org compliant desktop entry and MIME type definition.
  • The call stack column in list of messages will now be only displayed when at least one message on the list has call stack data.
  • File dialogs on Unix will be now native to the desktop environment you are using. Note that this relies on xdg-desktop-portal and dbus.

Tracy Profiler 0.8

28 Mar 19:32
9ba7171
Compare
Choose a tag to compare

See the following video for a summary of changes:

Summary of changes

Tracy Profiler 0.7.8

19 May 19:06
07778ba
Compare
Choose a tag to compare

For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.7.8/NEWS.

Child call times

Time spent in child function calls can be now optionally displayed in the symbol view window. Due to how programs are structured, time will be attributed to the next instruction (where the call will return).

1

General improvements to symbol view

Jump targets (typically out of screen) can be now also seen in tooltips.

2

Register access color codes are explained in tooltips.

3

Save options

When saving a trace you will be now able to select compression parameters. Previously this was only available through the update utility.

4

New GPU instrumentation options

  • Vulkan contexts can be now calibrated on Linux.
  • Direct3D 11 instrumentation is now supported.

Improvements to chrome tracing import

  • Tracy can now import chrome traces compressed with Zstd.
  • Custom source location tags are supported.
  • Support for multiple PIDs has been added.

obraz

Tracy Profiler 0.7.7

01 Apr 16:26
da29ec9
Compare
Choose a tag to compare

For a more detailed change list, see https://github.com/wolfpld/tracy/blob/v0.7.7/NEWS.

Number of entry call stacks

Each sampled assembly line has a number of entry call stacks (unique execution paths leading to the instruction) assigned to it. This was previously accessible through the "sample entry call stacks" window, and it is now more exposed in a tooltip, along with a reminder which should increase discoverability of the aforementioned window.

111

Note: Entry call stacks were previously named "parent call stacks".

Source code preview

Source code contents will now have preview tooltips in various places in the UI. Keep in mind it's possible that the displayed source code might not be up-to-date. Please consult the user manual for the usual caveats.

222