Tuesday, 9 October 2018

Tracy Profiler 0.4

The new version of Tracy Profiler has been released. Learn more about it in this video:

Complete release notes:

- 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
- Fix regression causing varying size of profiler window for different
- 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
  - 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
  - Middle clicking on an memory allocation address (or on a button in
    memory allocation info window) will zoom the view to the allocation
- 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
- Added ability to zoom-in to a selection range made using middle mouse
  - 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
  - The active frame set will be highlighted, and the rest will be dimmed
  - Frames can now also be discontinuous.
- Frames and zones too small to be displayed will be marked with a zig-zag
- 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
  - 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
  - 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
- 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
- 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
  - 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.

No comments: