xdebug不支持直接导出pdf或图片,仅生成cachegrind.out.*文本文件;需用kcachegrind/qcachegrind截图导出png,再打印为pdf;phpstorm可导出svg并转pdf,且支持源码跳转。

Xdebug 本身不支持直接导出性能分析报告为 PDF 或图片——它只生成 cachegrind.out.* 格式的文本文件(符合 KCachegrind / QCacheGrind 规范),后续可视化和导出依赖外部工具。别在 php.ini 里找 xdebug.export_to_pdf 这种不存在的配置项。
用 KCachegrind / QCacheGrind 打开并截图
这是最轻量、最常用的路径,适合快速定位热点函数:
-
KCachegrind(Linux)或QCacheGrind(macOS/Windows)是专为解析cachegrind.out.*设计的 GUI 工具,能展开调用树、按耗时/内存排序、高亮瓶颈函数 - 打开后,点击顶部菜单 File → Export → PNG(QCacheGrind 支持导出为 PNG;KCachegrind 原生不支持,需用系统截图工具)
- 若要导出为 PDF:先导出为 PNG,再用系统自带的“打印为 PDF”功能(如 macOS 的预览 → 文件 → 导出为 PDF;Windows 的“Microsoft Print to PDF”)
- 注意:导出前建议在
View → Details中勾选 “Show callers/callees”,否则截图可能丢失关键调用上下文
用 PhpStorm 内置分析器导出 SVG/PNG
如果你用 PhpStorm 开发,它内置了对 Xdebug 性能快照的可视化支持,且导出能力比命令行工具更友好:
Xdebug 3.4.1 是一款功能强大的 PHP 调试扩展工具,于 2025 年 1 月 6 日正式发布。作为 Xdebug 3.4 系列的首个修复版本,3.4.1 版在继承上一版本强大功能的同时,重点解决了稳定性问题。该版本不仅修复了访问超全局变量时可能引发的程序崩溃现象,还增强了对 Windows 平台 PIE 构建机制的支持,为广大 PHP 开发者提供了更加稳定的调试环境。这一版本适合所有
- 确保已启用
Xdebug profiler并生成了cachegrind.out.*文件(路径由xdebug.output_dir指定) - 在 PhpStorm 中,选择 Tools → Analyze Xdebug Profiler Snapshot…,选中对应文件
- 加载后,右键调用图任意空白处 → Export as SVG(支持矢量缩放);也可用系统截图快捷键截取当前视图为 PNG
- 不支持直接导出 PDF,但 SVG 可用浏览器打开后另存为 PDF,或通过 Inkscape 等工具转换
- 优势在于能关联源码跳转,点击函数名直接打开对应
.php行号,调试效率更高
为什么不能用浏览器打开 cachegrind.out.* 后另存为 PDF?
因为 cachegrind.out.* 是纯文本格式,含大量注释、调用关系和数字指标,没有布局信息:
- 直接丢进浏览器会显示为无格式乱码,CSS 无法可靠控制函数层级缩进和颜色映射
- 试图用
highlight.php或自定义 HTML 渲染器解析并美化,成本远高于用现成 GUI 工具 - 某些在线解析器(如 cachegrind-viewer)可生成 HTML 报告,但导出 PDF 仍依赖浏览器打印,字体/分页/折叠状态常丢失
- 真正稳定的 PDF 输出必须基于结构化渲染(如 Qt 的 QPainter 或 PHP 的
dompdf),而这些不在Xdebug职责范围内
真正卡住人的地方不是“怎么导出”,而是导出前没确认 cachegrind.out.* 文件是否真实包含有效数据——比如 xdebug.mode=profile 拼错成 profiler,或 xdebug.output_dir 目录不可写导致静默失败。先 ls -l /tmp/xdebug_profiles/ 看文件大小,0 字节就别折腾导出了。










