应安装kcachegrind而非qcachegrind,因ubuntu官方源仅提供kcachegrind,功能相同且界面更稳定;需确认xdebug已启用profiler并生成cachegrind.out.*文件,再用kcachegrind打开分析。

直接装 kcachegrind,别用 qcachegrind —— Ubuntu 官方源里没有 qcachegrind,只有 kcachegrind,且功能完全一致,界面更稳定。
确认 xdebug 日志已生成
在 Ubuntu 上跑 PHP 项目前,先确保 xdebug 已正确启用 profiler 并生成了 cachegrind.out.* 文件:
-
xdebug.profiler_enable_trigger=1(必须设为 1,避免全量采样) - 访问带参数的 URL,例如
http://localhost/index.php?XDEBUG_PROFILE - 检查
xdebug.profiler_output_dir目录(如/tmp/xdebug)是否有新生成的cachegrind.out.*文件 - 若无文件,运行
php --ri xdebug确认输出中含profiler_enabled => Off—— 这说明触发没生效,不是扩展没装,而是请求没带参数或 Nginx/Apache 没透传 QUERY_STRING
安装 kcachegrind(不是 qcachegrind)
Ubuntu 20.04+ 默认源中只有 kcachegrind,它就是 KDE 版的 cachegrind 查看器,和 macOS 的 qcachegrind 同源,无需额外编译:
Xdebug 3.4.1 是一款功能强大的 PHP 调试扩展工具,于 2025 年 1 月 6 日正式发布。作为 Xdebug 3.4 系列的首个修复版本,3.4.1 版在继承上一版本强大功能的同时,重点解决了稳定性问题。该版本不仅修复了访问超全局变量时可能引发的程序崩溃现象,还增强了对 Windows 平台 PIE 构建机制的支持,为广大 PHP 开发者提供了更加稳定的调试环境。这一版本适合所有
- 执行:
sudo apt update && sudo apt install kcachegrind - 验证:
kcachegrind --version应输出版本号(如kcachegrind 22.12.3) - 注意:不要尝试
apt install qcachegrind,该包不存在,会报E: Unable to locate package - 如果提示缺少
graphviz(影响 Call Graph 渲染),补装:sudo apt install graphviz
打开日志并避开路径陷阱
kcachegrind 能直接读取 xdebug 生成的 cachegrind 文件,但 Ubuntu 下容易卡在两个地方:
- 文件权限问题:PHP-FPM 通常以
www-data用户写日志,而你当前用户可能无权读 —— 运行sudo chmod 644 /tmp/xdebug/cachegrind.out.*或改用sudo -u $USER kcachegrind /tmp/xdebug/cachegrind.out.12345 - 绝对路径缺失:xdebug 日志里记录的是脚本的绝对路径(如
/var/www/html/index.php),但如果你在本地开发机上分析远程服务器传来的日志,kcachegrind会标红显示 “file not found” —— 这时点击顶部菜单File → Change Source Directory…,把本地对应目录(如/home/user/project)映射过去即可 - 不推荐把日志目录设在
/var/tmp:Ubuntu 的systemd-tmpfiles可能定期清理,建议固定用/tmp/xdebug并手动mkdir -p /tmp/xdebug && chmod 755 /tmp/xdebug
真正麻烦的从来不是装工具,而是日志路径权限、源码路径映射、以及误以为 qcachegrind 在 Ubuntu 可用 —— 这三点踩中任意一个,你就卡在“文件打开了但全是问号”。










