Commit Graph
156 Commits
Author SHA1 Message Date
Clément Grégoire e7c71c991c Drop sys/param.h dependency for BSD detection
Replace `#ifdef BSD` (which requires including `<sys/param.h>` first) with explicit checks for `__FreeBSD__`, `__NetBSD__`, `__OpenBSD__` and `__DragonFly__`, matching how these BSDs are already enumerated elsewhere in the codebase (OS name strings, thread id helpers, etc.).

This also avoids leaking the `sys/param.h` requirement through public headers (`TracySysTime.hpp`, `TracyCallstack.h`), where consumers would otherwise need it to correctly see `TRACY_HAS_SYSTIME` / `TRACY_HAS_CALLSTACK`.
`libbacktrace/config.h` is left as-is — it's third-party and only included from .c files where the `BSD` macro can still be picked up locally.

Note: for `setsockopt( m_sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&val, sizeof( val ) );` I added `__APPLE__` too since this was the only place where it was not checked explicitely.
2026-05-21 10:18:30 +02:00
Clément Grégoire e59601cf1c Fix ProfilerWorker hang when TRACY_HAS_CALLSTACK is not defined 2026-05-20 17:51:42 +02:00
Bartosz Taudul 305382453d Add callstack sample events with 32 and 16 bit timestamps. 2026-05-07 02:16:53 +02:00
Bartosz Taudul ccaef5ba0b ZoneBegin / ZoneBeginCallstack with 32 and 16 bit time data. 2026-05-07 02:16:53 +02:00
Bartosz Taudul 4d094c108d Add zone end messages with 32 and 16 byte time deltas.
Change in test application:
    compressed data: 130 Mpbps -> 105 Mbps
    uncompressed: 830 Mbps -> 740 Mbps
2026-05-06 19:09:19 +02:00
Clément Grégoire ca076b4a60 Add TracyMangle.hpp file to centralize config name mangling
Also rename MANGLED_NAME_BASED_ON_DEFINES => MANGLED_NAME_BASED_ON_CONFIG
2026-04-21 13:28:48 +02:00
Clément Grégoire a4f245550b Macro incompatibility experiment
We redirect GetProfiler() (most likely used by any project consuming tracy, since it's used by `tracy::ScopedZone`) to its implementation which now has a different function name based on the macros that can impact ABI (and enabled/disabled).
That way, when linking with mismatched defines you'd get an error such as

> main.obj : error LNK2019: unresolved external symbol "int __cdecl GetProfiler_CFG_E0_OD0_DI0_ML0_F0_DHT0_TF0(void)" (?GetProfiler_CFG_E0_OD0_DI0_ML0_F0_DHT0_TF0@@YAHXZ) referenced in function "int __cdecl GetProfiler(void)" (?GetProfiler@@YAHXZ)

Or

>[build] /usr/bin/ld: CMakeFiles/app.dir/main.cpp.o: in function `GetProfiler()':
[build] /..../TracyProfiler.hpp:143: undefined reference to `GetProfiler_CFG_E1_OD0_DI0_ML0_F0_DHT0_TF0()'

Reason for going with acronym+0/1 instead of just acronym when enabled is for us to be able to tell users easily which define is wrong by just looking at the error if needed.

The only thing we don't really detect is user not having TRACY_ENABLE but tracy having been built with it. This is because macros become noops in that case, with no reference to `GetProfiler`.
There may be a way to do it by introducing a local variable into each TU, but I don't really like that idea.
We could also add pragma detect mismatch for a more user-friendly error on windows (https://learn.microsoft.com/en-us/cpp/preprocessor/detect-mismatch?view=msvc-170).
2026-04-21 13:28:48 +02:00
Marcos Slomp 842420439d fix LogString wire in the DequeueSerial path (#1328) 2026-04-03 00:37:16 +02:00
Bartosz Taudul 739123d005 Add a way to override profiled program name and PID. 2026-03-31 01:18:50 +02:00
Marcos Slomp 01bd20c30a Windows x64 vs ARM opsie 2026-03-09 13:24:08 -07:00
Bartosz Taudul feb07e476a Merge pull request #1289 from slomp/slomp/windows-on-arm
Support for Windows on ARM
2026-03-06 23:55:02 +01:00
Marcos Slomp cc21988537 adding C API for Profiler::GetTime() 2026-03-06 01:33:01 -08:00
Marcos Slomp 4460e64f3a addressing code review 2026-03-05 11:10:43 -08:00
Marcos Slomp 332bbf2310 don't modify tracy_SPSCQueue.h 2026-03-04 17:35:05 -08:00
Marcos Slomp ab2c32e52f use SPSC queue notify/wait in the symbol queue to reduce the response latency of the symbol worker 2026-03-04 12:14:19 -08:00
Marcos Slomp 93036b6877 code review: implement in header, but don't bring windows.h along for the ride 2026-03-01 08:14:10 -08:00
Marcos Slomp e41ae15f27 using ARM64 intrinsics on Windows on ARM 2026-02-28 20:00:11 -08:00
Bartosz Taudul b7c54253ff Include TracyCrashHandler in a list of frames to cut on crash on Linux. 2026-01-29 22:44:23 +01:00
Bartosz Taudul eb18dafb22 Check for a substring match in CutCallstack. 2026-01-29 22:44:13 +01:00
Bartosz Taudul 3ddb96b9af Change CutCallstack/SendCallstack interface to accept an array. 2026-01-29 22:41:21 +01:00
Bartosz Taudul 0c6b551afa Make TracyCrashHandler visible externally. 2026-01-29 22:39:24 +01:00
Bartosz Taudul 5a1ff2496c Rename CrashHandler to TracyCrashHandler. 2026-01-29 22:19:50 +01:00
Bartosz Taudul 73694c7a24 Cleanup enums. 2026-01-24 01:50:11 +01:00
Bartosz Taudul 9016911a04 Fix clash with winapi define crap. 2025-12-30 14:49:23 +01:00
Bartosz Taudul 94c1614416 Store full user name in trace info. 2025-12-30 14:19:40 +01:00
Bartosz Taudul da85325686 Move user name retrieval to a common API. 2025-12-30 13:41:19 +01:00
Clément Grégoire 5ef64841cc Remove MessageMetadata type and replace by uint8_t everywhere 2025-12-28 15:04:18 +01:00
Clément Grégoire 4cceab5ad8 Remove Profiler::Messsage since it's not part of the public API
This also replaces `___tracy_emit_message*` by `___tracy_emit_logString`.
The `TracyCMessage*` defines no long include the `;`, which may be a breaking change even though we did already require semi-colon since 0.9.0. See #493 and #592
2025-12-28 15:04:05 +01:00
Clément Grégoire f17bd3f444 TracyDebug now uses TracyInternalMessage by default unless TRACY_VERBOSE or TRACY_NO_INTERNAL_MESSAGE is defined 2025-12-28 15:00:59 +01:00
Clément Grégoire f981330f66 Replace all messages text addr by TaggedUserlandAddress and send metadata over the network
There are two changes to the protocol:

- `QueueMessageLiteral*` were changed and what used to be addresses are now addresses+metadata
- Other messages now send `QueueMessage*Metadata` with added metadata.

This will later be used to store and transmit message sources, level, etc.
2025-12-28 14:44:40 +01:00
Ondřej Míchal d79b6d040e public/client: Correctly initialize atomic thread reference
Atomic variables need to be initialize with direct-initialization
instead of copy-initialization lest the compilation fails complaining
about missing constructor for the atomic type.
2025-12-08 15:06:26 +02:00
Bartosz Taudul 886a0abec9 Merge pull request #1215 from slomp/slomp/worker-thread-race
Fixed race condition around `s_sysTraceThread`
2025-12-03 22:43:42 +01:00
Marcos Slomp 7fa30d08b5 clarification 2025-12-03 12:41:44 -08:00
Marcos Slomp 874d65b036 code formatting 2025-12-03 10:15:19 -08:00
Marcos Slomp c44beaac28 fixed race condition around s_sysTraceThread 2025-12-02 16:19:20 -08:00
Trevor L. McDonell d1b0406801 Add option to ignore memory free faults
This replaces the IsApple flag, which was previously only used for this purpose.
2025-12-02 16:16:50 +01:00
Bartosz Taudul 89f68babd2 Android user name may be longer than _POSIX_LOGIN_NAME_MAX. 2025-11-13 12:28:57 +01:00
Matt McGill 491445343f Defer GPU context events in serial C API
Without this, the profiler crashes due to an assert
violation when connecting to a client built with
TRACY_ON_DEMAND that uses these C API calls.
2025-10-24 18:52:36 -04:00
Bartosz Taudul 30267de474 Make sure symbols thread has time to enter into disconnected condition. 2025-10-21 20:42:44 +02:00
Bartosz Taudul 5cf408fc10 Cosmetics. 2025-09-11 00:57:22 +02:00
Anders Wang Kristensen 355a11f47f Missing initialization of dequeueStatus 2025-09-10 14:43:28 +02:00
Anders Wang Kristensen f21f8d6ad2 Fix crash due to freeing elements of m_serialDequeue twice.
In Profiler::DequeueSerial if AppendData fails part way through m_serialDequeue then the elements could be freed again in Profiler::ClearSerial, which leads to memory corruption in rpmalloc.
2025-09-10 12:56:47 +02:00
Marcos Slomp 5864350912 removed duplicated extern "C" 2025-08-02 06:48:00 -07:00
Marcos Slomp 9b84b527a6 adding manual control over sampling profiling 2025-08-01 15:24:30 -07:00
Bartosz Taudul c03fdaec1e Merge pull request #1097 from erieaton-amd/rocprofv3-2
Collect dispatches and counter values with Rocprofv3
2025-07-22 13:33:15 +02:00
Patrik Kraif 4a3713cca8 Add support for GDK 2025-07-16 12:51:16 +02:00
Bartosz Taudul 8fa40e87d1 Merge pull request #1016 from 6yry6e/systrace-hang-fix
Fix: Hang on shutdown with enabled system tracing
2025-07-12 11:49:05 +02:00
Eric Eaton a754db16f8 Show counter name in GUI 2025-07-11 17:16:00 -07:00
Bartosz Taudul 880c600506 Remove queue delay calibration.
This value is not used for anything, it was just a number displayed in
the UI without much meaning to anyone.

Operations on the queue during early init may not work correctly, stopping
some programs from running past the calibration loop.
2025-07-11 23:23:31 +02:00
Martijn Courteaux 8b1576170d Disable Windows __try1 __except1 mechanic to be cross compilable from Linux. 2025-06-19 17:11:28 +02:00