Context switch samples were appended in arrival order. Samples which were postponed due to missing context switch data are replayed after newer samples were already classified, so the vector could become unordered. Everything that reads it assumes time order: the wait stacks range filter, the sampling statistics percentage denominator, and the context switch sample filters in the trace load jobs. In the load jobs an unordered vector could silently disable the filtering for the rest of a thread, reintroducing the context switch samples into the symbol and child sample maps. Use a SortedVector and restore the ordering at the points where it can break: after the postponed sample replay and when saving a trace. The save file version is bumped, so that the sort order check on load is only performed for traces saved by previous versions.
Tracy Profiler
A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications.
Tracy supports profiling CPU (Direct support is provided for C, C++, Lua, Python and Fortran integration. At the same time, third-party bindings to many other languages exist on the internet, such as Rust, Zig, C#, OCaml, Odin, etc.), GPU (All major graphics/compute APIs: OpenGL, Vulkan, Direct3D 11/12, Metal, OpenCL, CUDA, WebGPU.), memory allocations, locks, context switches, automatically attribute screenshots to captured frames, and much more.
- Documentation for usage and build process instructions
- Releases containing the documentation (
tracy.pdf) and compiled Windows x64 binaries (Tracy-<version>.7z) as assets - Changelog
- Interactive demo
An Introduction to Tracy Profiler in C++ - Marcos Slomp - CppCon 2023
Introduction to Tracy Profiler v0.2
New features in Tracy Profiler v0.3
New features in Tracy Profiler v0.4
New features in Tracy Profiler v0.5
New features in Tracy Profiler v0.6
New features in Tracy Profiler v0.7
New features in Tracy Profiler v0.8



