Commit Graph

10144 Commits

Author SHA1 Message Date
Bartosz Taudul
c11fd010d8 Rebuild markdown manual. 2026-05-27 00:10:33 +02:00
Bartosz Taudul
121e10c837 Convert latex font awesome markup to unicode codepoints matching the C defines. 2026-05-26 23:56:27 +02:00
Bartosz Taudul
22d1c2d3c3 Properly convert bclogo blocks into markdown. 2026-05-26 22:34:45 +02:00
Bartosz Taudul
20d7135c24 Merge pull request #1373 from siliceum/feature/unify-set-options
Options.cmake: unify `set_options*` and `tracy_set_options`
2026-05-26 12:58:45 +02:00
Clément Grégoire
aaf1304308 Options.cmake: unify set_options* and tracy_set_options
Renamed `tracy_*` versions to short version without prefix
2026-05-26 12:50:19 +02:00
Bartosz Taudul
ab62c00be5 Add limit on disassembly tool reply. 2026-05-25 00:57:19 +02:00
Bartosz Taudul
757b582ae7 Include external function status in sampling stats. 2026-05-25 00:46:46 +02:00
Bartosz Taudul
b81ef061f8 Display LLM address during connection attempt. 2026-05-24 17:02:03 +02:00
Bartosz Taudul
702b16977b Set 5 second connection timeout on LLM API connection. 2026-05-24 17:02:02 +02:00
Bartosz Taudul
3f1e572a23 Update LLM API input hint to llama.cpp default port. 2026-05-24 17:02:02 +02:00
Bartosz Taudul
00d4e9ba21 Don't try connecting to LLM after each keystroke.
When typing in e.g. "127.0.0.1" the first character "1" as a valid address
that does not immediately fail the connection attempt. The result was that
any further interaction with the UI (including completing the input) was
blocked by the "please wait" screen during connection attempt.
2026-05-24 17:01:59 +02:00
Bartosz Taudul
ee37bb40f0 Merge pull request #1372 from wolfpld/slomp/nvcc-msvc-fix
NVCC (with MSVC/cl.exe) build fix
2026-05-24 16:29:58 +02:00
Bartosz Taudul
215199239f Merge pull request #1370 from siliceum/feature/custom-platform-hooks
Add `TRACY_PLATFORM_HEADER` hook for unsupported platforms
2026-05-24 15:48:43 +02:00
Clément Grégoire
f93d17a96f Add TRACY_PLATFORM_HEADER hook for unsupported platforms.
Extension point so private/unsupported platforms can plug in their own implementations of the kernel/libc primitives Tracy depends on, without patching the `#if`/`#elif` chains.

Projects supply a platform header via `-DTRACY_PLATFORM_HEADER="\"my_platform.h\""` at build time. Tracy includes it in any TU that needs the hooks. The header toggles per-category `TRACY_HAS_CUSTOM_*` macros and declares matching `tracy::Platform*` functions.

Available hooks:

- `TRACY_HAS_CUSTOM_THREAD_ID` → `PlatformGetThreadId`
- `TRACY_HAS_CUSTOM_USER_INFO` → `PlatformGetHostname`, `PlatformGetUserLogin`, `PlatformGetUserFullName`
- `TRACY_HAS_CUSTOM_SAFE_COPY` → `PlatformSafeMemcpy`
- `TRACY_HAS_CUSTOM_ALLOCATOR` → `PlatformMalloc`, `PlatformFree`, `PlatformRealloc`, `PlatformAllocatorInit`, `PlatformAllocatorThreadInit`, `PlatformAllocatorFinalize`, `PlatformAllocatorThreadFinalize`

Each hook is wired as the first arm of its respective `#if`/`#elif` chain, so existing supported platforms are unaffected.

Template files in `examples/CustomPlatform/` and a new subsection in `manual/tracy.tex` document the mechanism.
2026-05-24 15:42:42 +02:00
Clément Grégoire
84570487bf Move CMake option wrappers into cmake/options.cmake.
Move `tracy_set_option` and `tracy_set_option_value` from `CMakeLists.txt` into `cmake/options.cmake`. Add `tracy_set_option_value_as_string` for options whose value is embedded as a C string literal. All three accept an optional trailing target argument; when provided, the option is also propagated as a PUBLIC compile definition on that target.

Existing `set_option`/`set_option_value` are unchanged but will be replaced later by the `tracy_*` versions.
2026-05-24 15:42:42 +02:00
Bartosz Taudul
03227f7ae1 Update identify.cpp build instructions. 2026-05-24 15:35:43 +02:00
Bartosz Taudul
05c2638467 Remove option to build profiler GUI with no statistics. 2026-05-24 15:07:53 +02:00
Clément Grégoire
fd68959223 Rename InitRpmalloc to InitAllocator.
The function is about to dispatch between rpmalloc and a pluggable allocator hook, so the rpmalloc-specific name no longer fits. Pure rename plus a small consequence: the SymbolWorker call site no longer needs the TRACY_USE_RPMALLOC guard, since the no-op static-inline fallback in TracyAlloc.hpp makes InitAllocator() safe to call unconditionally.
2026-05-24 15:04:31 +02:00
Bartosz Taudul
5c0263c2f0 Disable display of hw samples by default. 2026-05-24 14:57:31 +02:00
Bartosz Taudul
5fd0dc569b Make impact option active only if hw samples are enabled. 2026-05-24 14:55:59 +02:00
Bartosz Taudul
ec1c2d4267 Display aggregation counts in bottom / up sample trees. 2026-05-24 14:23:59 +02:00
Bartosz Taudul
b7e405ebbd Use proper wait stacks grouping variable. 2026-05-24 14:15:53 +02:00
Bartosz Taudul
e8a0676c0b Fix regression that made propagate inlines always disabled if no child calls. 2026-05-24 13:35:48 +02:00
Bartosz Taudul
32b46a3b90 Cleanup. 2026-05-23 23:53:22 +02:00
Bartosz Taudul
cffd0007c5 Bump libs. 2026-05-23 23:41:39 +02:00
Marcos Slomp
564e0e1e71 removing scope qualifiers 2026-05-23 14:20:06 -07:00
Bartosz Taudul
6eb9bf81ad Fix out of bounds read. 2026-05-23 13:40:18 +02:00
Bartosz Taudul
f99a02505a Fix possible div-by-zero.
If as.ipMaxAsm.local is 0 and m_childCalls is false, GetHotnessColor(count, 0)
performs float(2 * count) / 0. The old code explicitly guarded against this
with the as.ipMaxAsm.local != 0 check.
2026-05-23 13:33:16 +02:00
Bartosz Taudul
f63c25fb79 Add glow to gutter markers. 2026-05-23 13:11:02 +02:00
Bartosz Taudul
a0af290db5 Rework symbol view gutter markers logic. 2026-05-23 12:26:24 +02:00
Bartosz Taudul
65db47ed0d Implement viewing assembly attachments. 2026-05-23 01:35:11 +02:00
Bartosz Taudul
d06c4ce816 Fix broken callstack display in zone tooltips if no local functions. 2026-05-23 00:37:57 +02:00
Bartosz Taudul
c91215bd99 Add function for checking if there are local functions in a callstack. 2026-05-23 00:30:47 +02:00
Bartosz Taudul
dfac4cb8a4 Defer initial system prompt update to the first draw. 2026-05-22 19:15:47 +02:00
Bartosz Taudul
34a1bb6107 DrawSourceTooltip() doesn't work with free-floating strings. 2026-05-22 17:54:26 +02:00
Bartosz Taudul
6957f968a4 Include trace time span in llm system message. 2026-05-22 02:06:58 +02:00
Bartosz Taudul
896cdc9462 Fade-out outdated assistant replies.
The "outdated" concept is strictly for chain of assistant replies with
nothing in between, i.e.:

"I will check this..."      <- outdated
<tool call>                 <- not displayed
"Now I will do that..."     <- outdated
<tool call>                 <- not displayed
"Let me consider..."        <- outdated
<reasoning>                 <- not displayed
"Now I have the answer..."

The first three messages are at this point considered outdated, as the
model provided a more recent message.

Note that in chain such as below there are NO outdated messages:

"How can I help..."
<user input>
"Ah, I see..."
<user input>
"You may try to..."

Similarly, if the tool calls or reasoning sections are explicitly enabled
in the chat UI, the messages are also not considered outdated.
2026-05-21 21:23:14 +02:00
Bartosz Taudul
efc33a09d9 Fix potential issue with last chat turn detection. 2026-05-21 20:51:58 +02:00
Bartosz Taudul
61875e1bd0 Add LLM tool for listing sampling statistics. 2026-05-21 20:27:54 +02:00
Bartosz Taudul
e003885946 Merge pull request #1369 from siliceum/feature/no-sys-param-for-bsd
Drop sys/param.h dependency for BSD detection
2026-05-21 17:57:16 +02:00
Bartosz Taudul
d40806caff Merge pull request #1368 from siliceum/fix/timeline-depth
Prevent unlimited recursion leading to stack overflow
2026-05-21 17:50:58 +02:00
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
69855a1416 Prevent unlimited recursion leading to stack overflow
This can happen notably when the user does not call ZoneEnd.

I used 256 arbitrarily as it seemed higher values would just make the UI freeze anyway due to perf reasons.
I added a warning in the notification area so that users can locate it.
2026-05-21 09:38:43 +02:00
Bartosz Taudul
60247b68d3 Merge pull request #1364 from siliceum/fix/zone-runtime
Fix and refactor zone running time
2026-05-20 19:29:29 +02:00
Bartosz Taudul
b48ef9a2ab Merge pull request #1366 from siliceum/fix/ondemand-no-callstack-hang
Fix ProfilerWorker hang when TRACY_HAS_CALLSTACK is not defined
2026-05-20 18:05:42 +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
43472f1226 Merge pull request #1365 from siliceum/feature/fiber-tests
Add fiber to test app
2026-05-20 12:34:45 +02:00
Clément Grégoire
c1177a0cde Add fiber to test app
This simulates fibers on different threads. Was used to discover an issue reported on discord which led to #1364
2026-05-20 12:07:05 +02:00
Clément Grégoire
91c0b1e42b Fix and refactor zone running time
Many of the zones would have a negative running time due to a missing `cs->IsEndValid()` check.
This could end reporting context switches before the zone start, due to `cs->End()` returning -1.

This happened when systrace dropped event, or when using Fibers and `TracyFiberEnter` is called on the new thread once the fiber has been scheduled. (The manual actually does not really hint this is wrong, we should probably fix the manual or the server code.)

In both cases, we assume runtime to be 0 for that context switch. Since we have no actual information. Both options (counting full runtime or no runtime) are wrong, and most of the code handling `!cs->IsEndValid()` uses `Start` instead so that's what I did. This is still a net improvement over displaying negative values. If we want to change this handling, we'd need to review the other places that do `it->IsEndValid() ? it->End() : it->Start()` as well.

It also seems two different concepts were being mixed:
1. Do we have any context switch data at all ? (`it != ctx->v.end()` ie `count != 0`)
2. Do we have complete data for the last context switch (`eit != ctx->v.end()`)

This led to some places of the code not displaying or counting running time at all, notably when hovering a zone.

I think most of the time we wanted 1, as it reports correctly and assumes the last context switch is still running, which is a fair assumption if we didn't see one putting the thread to sleep.

I also fixed a case where we were overcounting runtime when range start was during a sleep.
2026-05-20 12:02:38 +02:00
Bartosz Taudul
14a1a3227e Add guidance about function context. 2026-05-20 02:26:14 +02:00