github wolfpld/tracy v0.9
Tracy Profiler 0.9

latest releases: v0.10, v0.9.1
18 months ago

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.

Don't miss a new tracy release

NewReleases is sending notifications on new releases.