5 分钟跑通 Tracy 性能分析器:三平台一次部署到位,附排障清单
【免费下载链接】tracyFrame profiler项目地址: https://gitcode.com/GitHub_Trending/tr/tracy
游戏帧率突然掉了一半,是 GPU 渲染慢了,还是 CPU 逻辑卡了?别靠猜。Tracy 是一款实时、纳米级分辨率的远程遥测帧分析器(frame profiler),能把任意程序里的 CPU/GPU 性能追踪、内存分配、锁竞争全部画进一条可缩放的时间线:被分析的程序照常运行,数据经 UDP 远程推送到分析器界面。
这篇文章只解决一件事:在 Windows、Linux、macOS 上把 Tracy 编译部署跑起来。全程只需要 CMake 加一套编译器,第三方依赖大头由 CMake 在首次构建时自动下载,装环境的工作比你想的少。
上图就是部署完成后的样子:每一行是一个线程,可以放大到纳秒级,右侧挂着内存视图和统计窗口。
一张表看清三平台前置条件
| 平台 | 装齐这些就能编 |
|---|---|
| Windows | Visual Studio 2019/2022(勾选 C++ 桌面开发负载)+ CMake ≥ 3.25 |
| Linux | GCC 11+/Clang 14+ + CMake ≥ 3.25 + Ninja;Wayland 后端另需 wayland/xkbcommon/EGL 开发包 |
| macOS | Xcode 15+(AppleClang 15 是硬门槛)+ CMake ≥ 3.25 + Ninja |
CMake 3.25 这个门槛写死在分析器构建脚本 profiler/CMakeLists.txt 的第一行。国内不少机器的系统源里 CMake 停在 3.16 附近,这里最容易翻车,后面排障清单有对应的一行解法。
动手前明确一个仓库结构问题,能省半小时:
- 根目录的 CMakeLists.txt 只构建客户端库
TracyClient——这是将来把 Tracy 嵌入你自己项目时用的; - 分析器 GUI 本体是
profiler/子目录下独立的项目。想让界面跑起来,编的是它,不是根目录。
clone 之后四步出产物
最短路径就是这四条命令,三个平台通用:
git clone https://gitcode.com/GitHub_Trending/tr/tracy cd tracy/profiler cmake --preset release cmake --build build-release --parallelpreset 已经配好 Release + Ninja,产物在build-release/tracy-profiler(Windows 下是tracy-profiler.exe),出来即可运行。configure 阶段刷屏下载的 GLFW、Freetype、capstone 等依赖都由 cmake/CPM.cmake 自动拉源码编译,所以首次构建慢(约 5~15 分钟)属正常现象,之后重建直接走缓存。
Windows:想用 IDE 就换 Visual Studio 生成器
没装 Ninja 的话,preset 用不了,直接用 VS 生成器:
cd tracy/profiler cmake -B build-vs -G "Visual Studio 17 2022" -A x64 cmake --build build-vs --config Release生成的build-vs/tracy-profiler.sln可以直接丢进 Visual Studio 点选编译,产物落在build-vs/Release/tracy-profiler.exe。
另外记得给防火墙放行tracy-profiler.exe:它默认监听 UDP 9090 接受客户端连接,不放行的话同网段另一台机器上的被分析程序会连不上。
Linux:一条命令装齐 Wayland 依赖
Linux 默认走 Wayland 后端(LEGACY开关没打开时),先装开发包:
sudo apt-get install ninja-build libwayland-dev wayland-protocols libxkbcommon-dev libegl-dev然后照抄"四步出产物"里的两条 cmake 命令即可。如果你是纯 X11 环境,不想折腾 Wayland 包,configure 时加-DLEGACY=ON就切回 GLFW/X11 后端,GLFW 会被 CPM 自动下载,连上面的依赖都不用装。
macOS:除 Xcode 外全部自动化
三个平台里 macOS 最省心——Apple 平台默认强制自动下载 GLFW、Freetype、pugixml,工具链就位即可:
xcode-select --install cmake --preset release # 在 tracy/profiler 目录下 cmake --build build-release --parallelAppleClang 15 以下(Xcode 15 以下)会在 configure 阶段直接被拒,提示升级工具链。想要一个能双击打开的.app,configure 时加-DBUNDLE=ON,构建脚本会自动打包图标资源。
macOS 上顺手可以把自带的examples/dyna示例跑起来,出来的就是上面这个游戏菜单;开着分析器,它每一帧的 CPU/GPU 数据都会实时出现在时间线里。
跑个示例验证:确认分析器真的在采数据
GUI 能打开不等于部署成功,得喂一次真实数据。仓库自带最小示例 examples/fibers.cpp(两个 fiber 线程打点),在 Linux 下一条命令编译:
g++ examples/fibers.cpp public/TracyClient.cpp -Ipublic/tracy \ -DTRACY_ENABLE -DTRACY_FIBERS -lpthread -ldl -o fibers✅ 先启动tracy-profiler,再运行./fibers:分析器里应出现持续 1 秒的job1zone,统计表里能看到调用点。这一步通过,部署才算 100% 完成。
踩坑实录:症状 → 原因 → 一行解法
⚠️ 按出现频率排序,全是真实场景:
1. configure 报 "CMake 3.25 or higher is required"原因:系统装的 CMake 太旧。pip install -U cmake一步到位(macOS 也可brew install cmake);Windows 用户直接在 VS 安装器里勾选 CMake 组件。
2. Linux 上 pkg-config 报找不到 egl / wayland-egl / xkbcommon原因:默认 Wayland 后端缺开发包。sudo apt-get install libegl-dev libwayland-dev wayland-protocols libxkbcommon-dev;或者 configure 加-DLEGACY=ON绕道 X11。
3. 分析器一直转圈,看不到被分析的程序八成是客户端根本没启用:必须带TRACY_ENABLE宏编译(TRACY_NO_BROADCAST、TRACY_ONLY_LOCALHOST这类开关也会限制连接范围,排查时看一眼根目录构建选项)。同机检查防火墙,跨机确认 UDP 9090 没被拦。
4. 在根目录跑 cmake,编完发现没有 GUI不是编译失败——根目录的构建目标只有TracyClient静态库,这是设计如此。GUI 请进profiler/子目录再构建。
5. Windows 上程序秒崩或黑屏分析器需要 OpenGL 3.3+ 上下文。显卡驱动过旧、或远程桌面环境没有 3D 加速都会这样,更新驱动、改用本地物理屏即可。
接下来你可以试试
- 把 Tracy 接入自己的 C/C++ 项目:源码里包含
tracy/Tracy.hpp,把public/TracyClient.cpp编进可执行文件,编译选项加上-DTRACY_ENABLE——完整集成说明见 manual/tracy.md; - 试一下
TRACY_ON_DEMAND按需采集模式,平时零开销,需要分析时才启动上报; - 做 GPU 集成的话,看看
public/tracy/下的 TracyVulkan.hpp、TracyD3D12.hpp 这些封装头,每个图形 API 都有现成入口。
接上你项目的第一帧数据之后,你就知道这个跨平台性能分析工具为什么值得常驻在开发机上了。
【免费下载链接】tracyFrame profiler项目地址: https://gitcode.com/GitHub_Trending/tr/tracy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考